我正在统一制作一个2.5D游戏,这是关于一艘太空船更像传统太空船游戏一样在太空中飞行。
当玩家像飞机一样旋转时,我希望我的飞船稍微倾斜一点,就像这架飞机在转弯一样:
这是我的屏幕转弯时的样子:
我希望它稍微倾斜一点,这是我现在的代码
void Turn()
{
float RotationCount = Input.GetAxis("Horizontal");
float TurnShip = turnSpeed * Time.deltaTime * Input.GetAxis("Horizontal");
if (Input.GetAxis("Horizontal") < 0)
ForwardTransform.Rotate(0, TurnShip,10*Time.deltatime)
else if (Input.GetAxis("Horizontal") > 0)
ForwardTransform.Rotate(0, TurnShip,-10*Time.deltatime);
//if (RotationCount < 0)
// myT.Rotate(0, TurnShip, 9);
//else if (RotationCount > 0)
// myT.Rotate(0, TurnShip, -9);
}
这是轮换脚本,下面是止损脚本
void Thrust()
{
if (Input.GetAxis("Vertical") > 0.75f)
{
V = Input.GetAxis("Vertical");
}
myT.position += myT.forward * movementSpeed * Time.deltaTime * V;
}
但是当我使用此代码时,随着船头根据运动而向下或向上,船会改变其在Z轴上的位置
我如何在不改变Z轴位置的情况下倾斜船
运输初始位置:
当用户转船时:
我应该用什么其他方式转船?
答案 0 :(得分:0)
为什么没有中间物体并使飞船成为该物体的子代?
因此,您无需旋转船,而可以旋转此中间对象,然后可以根据移动来移动船。这里的技巧是,中间对象仅沿一个轴旋转,而飞船仅沿一个轴旋转(相对于其父变换)。
这将避免任何Euler角/四元数/参考系移动,对于这样的简单问题,您就需要这样做。