Rigidbody.rotation同时改变和AddTorque()

时间:2015-10-01 14:11:45

标签: unity3d

如果他在任何方向(沿X轴和Z轴)移动,我想倾斜玩家(dron),就像在太空Schooter教程中一样。但同时我想用操纵杆旋转他(绕Y轴)。我正在使用这样的代码:

void FixedUpdate()
{
    float rotation = CrossPlatformInputManager.GetAxis("L_Horizontal");
    float vertical_movement = CrossPlatformInputManager.GetAxis("L_Vertical");
    Vector3 movement = new Vector3
    (
        CrossPlatformInputManager.GetAxis("R_Horizontal") * MovementForceMultiplier,
        0.0f,
        CrossPlatformInputManager.GetAxis("R_Vertical") * MovementForceMultiplier
    );


    if (DebugInfo) Debug.Log(player.velocity.magnitude);


    Player.AddTorque(Vector3.up * rotation / TorqueDivisor);

    Player.AddRelativeForce(0.0f, vertical_movement * VerticalForceMultiplier, 0.0f);

    if (Player.velocity.magnitude < MaxSpeed)
        Player.AddRelativeForce(movement);

    Player.rotation = Quaternion.Euler(Player.velocity.z * TiltingMultiplier, Player.rotation.y, -Player.velocity.x * TiltingMultiplier);
}

发生了什么事?玩家倾斜,但旋转(AddTorque)略有变化,仅在Y轴附近从359级变为1级(2级角)。

我尝试使用AddTorque(以及AddRelativeTorque)来进行玩家倾斜,但是它过于倾斜,并且很难在最大旋转上制作边界。我失败了。

当我评论&#34; Player.rotation&#34;使用AddTorque改变旋转播放器非常有效。

我需要倾斜和旋转,因为它必须模拟dron飞行。你有什么想法,我该怎么办?

1 个答案:

答案 0 :(得分:0)

将船舶置于空父GameObject内。使用父项围绕Y轴旋转,然后您可以自由旋转船只本身倾斜或俯仰或任何您想要的任何内容,而不会干扰或弄乱Y旋转。