- Home /
2D Player Movement C#
I have a script for basic movement that works, but I want to be able to steer the players horizontal movement while midair. I also would like to be able to determine the force or the height of the jump by how long I hold the jump button.
Here's my working movement script so far:
using UnityEngine;
using System.Collections;
public class Player_movement : MonoBehaviour
{
public float f_speed;
public float f_jumpSpeed;
public float f_gravity;
private Vector3 v3_moveDirection = Vector3.zero;
private CharacterController controller;
void Awake ()
{
controller = GetComponent<CharacterController>();
}
void Update ()
{
if (controller.isGrounded)
{
v3_moveDirection = new Vector3(Input.GetAxis("Horizontal"), 0, 0);
v3_moveDirection *= f_speed;
if (Input.GetButton("Jump"))
{
v3_moveDirection.y = f_jumpSpeed;
}
}
v3_moveDirection.y -= f_gravity * Time.deltaTime;
controller.Move(v3_moveDirection * Time.deltaTime);
}
}
Answer by AndreasDp · Oct 21, 2012 at 03:09 PM
i get this error.
NullReferenceException: Object reference not set to an instance of an object PlayerMovement.Update () (at Assets/PlayerMovement.cs:19) -------- How can i fix it
Answer by fdfragoso · Jul 19, 2013 at 03:28 AM
Change your line 14 to: controller = this.GetComponent(); Put this script inside who will make the action of movement.
Your answer
Follow this Question
Related Questions
Making a bubble level (not a game but work tool) 1 Answer
Player movement boudaries in 2D 1 Answer
Uneven speed in 2d movement script 2 Answers
Bullet not moving from script 3 Answers
How can i smooth out the rotation? 1 Answer