Jump to content

I am following the book Unity in action and have run into an issue with some of the code. I am unsure if the author tested the code as I have the following issue:

 1. With the scripts added separately all functions work it's only when they are added together that there is an issue.
 2. When I look up my character automatically moves forward
 3. When I look down my character automatically moves backwards

**EDIT: If gravity is set to zero I do not move forward or back, but I do float**

 

**My Mouselook script:**

Spoiler

 

public class Mouselook : MonoBehaviour {
    public enum RotationAxes
    {
        MouseXandY = 0,
        MouseX = 1,
        MouseY = 2
    }

    public RotationAxes axes = RotationAxes.MouseXandY;

    // Use this for initialization
    void Start () {
    
    }

    public float sensitivityHor = 9.0f;
    public float sensitivityVert = 9.0f;

    public float minimumVert = -45.0f;
    public float maximumVert = 45.0f;

    private float _rotationX = 0;

    // Update is called once per frame
    void Update () {
        if(axes==RotationAxes.MouseX)
        {
            transform.Rotate(0, Input.GetAxis("Mouse X") * sensitivityHor, 0);
        }

        else if(axes==RotationAxes.MouseY)
        {
            _rotationX -= Input.GetAxis("Mouse Y") * sensitivityVert;
            _rotationX = Mathf.Clamp(_rotationX, minimumVert, maximumVert);

            float rotationY = transform.localEulerAngles.y;
            transform.localEulerAngles = new Vector3(_rotationX, rotationY, 0);
        }
        else
        {
            _rotationX -= Input.GetAxis("Mouse Y") * sensitivityVert;
            _rotationX = Mathf.Clamp(_rotationX, minimumVert, maximumVert);

            float delta = Input.GetAxis("Mouse X") * sensitivityHor;
            float rotationY = transform.localEulerAngles.y + delta;

            transform.localEulerAngles = new Vector3(_rotationX, rotationY, 0);

        }

    
    }
}

 

 

**My FPSInput script:**

Spoiler

 

public class FPSInput : MonoBehaviour {

    public float speed = 3.0f;
    public float gravity = -3f;
    private CharacterController _charController;

    // Use this for initialization
    void Start () {
        _charController = GetComponent<CharacterController>();
    }
    
    // Update is called once per frame
    void Update () {
        float deltaX = Input.GetAxis("Horizontal") * speed;
        float deltaZ = Input.GetAxis("Vertical") * speed;
        Vector3 movement = new Vector3(deltaX, 0, deltaZ);
        movement = Vector3.ClampMagnitude(movement, speed);
        movement.y = gravity;

        movement *= Time.deltaTime;
        movement = transform.TransformDirection(movement);
        _charController.Move(movement);
    

    }
}

 


 

Link to comment
https://linustechtips.com/topic/560601-unity-issue-mouse-look-and-movement/
Share on other sites

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×