Unity 2D角色运动

时间:2016-03-28 06:33:53

标签: unity3d game-physics unity5 unity3d-2dtools

对于我正在尝试构建的游戏,我希望我的玩家对象在“W / A / S / D'被压制住了。

例如,如果我想向右移动,我必须按住D'。

我尝试过使用Rigidbody2D.AddForce,但我不喜欢它产生的动作感觉。

我正在寻找即时移动和停止,而不是任何加速/减速。

有什么想法吗?

谢谢!!! 亚历

1 个答案:

答案 0 :(得分:0)

你可以尝试这样的事情。 在update方法中,使用以下代码从WASD键获取移动值。

MovementInputValue = Input.GetAxis ("VerticalAxis_name");
TurnInputValue = Input.GetAxis ("HorizontalAxis_name");

然后,在FixedUpdate方法中,使用以下代码移动对象。

// For moving

    Vector3 movement = transform.forward * MovementInputValue * m_Speed * Time.deltaTime;
    rigidbody.MovePosition(rigidbody.position + movement);

 //For turning
    float turn = TurnInputValue * m_TurnSpeed * Time.deltaTime;
    Quaternion turnRotation = Quaternion.Euler (0f, turn, 0f);
    rigidbody.MoveRotation (rigidbody.rotation * turnRotation);

此代码是为3D移动编写的,但您可以轻松将其更改为2D