如果他在任何方向(沿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飞行。你有什么想法,我该怎么办?
答案 0 :(得分:0)
将船舶置于空父GameObject
内。使用父项围绕Y
轴旋转,然后您可以自由旋转船只本身倾斜或俯仰或任何您想要的任何内容,而不会干扰或弄乱Y
旋转。