当不需要移动时,Unity 3D移动

时间:2014-10-01 15:47:28

标签: c# unity3d mono monodevelop

单声道开发和Unity 3d非常新,似乎在使用此代码时遇到问题。首先,代码工作正常。它做了它应该做的事情,然而,它也做了一些它不应该做的时髦的东西。你可以向上,向下,向左和向右看,也可以走向那些方向,不好的部分是因为某些原因,我的角色喜欢在静止时轻推鼠标的方向。我错过了什么?这样做的效率更高/越来越少?

public class PlayerControl : MonoBehaviour {

    public float WALK_SPEED = 1.3f;
    public float RUN_SPEED = 4.0f;
    public float STRAFE_SPEED = 5.0f;
    public float ROTATION_SPEED = 300.0f;
    public float JUMP_FORCE = 250.0f;   
    void Start()
    {
    }
    // Update is called once per frame

    void Update () 
    {
        float movementSpeed = WALK_SPEED;
        float strafeSpeed = STRAFE_SPEED;
        float rotationSpeedx = ROTATION_SPEED;
        float rotationSpeedy = ROTATION_SPEED;

        if (Input.GetKey(KeyCode.LeftShift))
        {
            movementSpeed = RUN_SPEED;
        }

        movementSpeed = Input.GetAxis("Vertical")  * movementSpeed * Time.deltaTime;
        strafeSpeed = Input.GetAxis("Horizontal")  * strafeSpeed * Time.deltaTime;
        rotationSpeedx = Input.GetAxis("Mouse X") * rotationSpeedx * Time.deltaTime;
        rotationSpeedy = Input.GetAxis("Mouse Y") * rotationSpeedy * Time.deltaTime;

        Vector3 rotate = new Vector3 (-rotationSpeedy, rotationSpeedx, 0);

        transform.Translate(Vector3.forward * movementSpeed);
        transform.Translate(Vector3.right * strafeSpeed);
        transform.Rotate(rotate);

        if (Input.GetKeyDown(KeyCode.Space) &&
            transform.position.y < 30) 
        {
            rigidbody.AddForce(Vector3.up * JUMP_FORCE);
        }
    }
}

1 个答案:

答案 0 :(得分:0)

尝试冻结刚体部件上的旋转约束。这可能会停止轻触。