试图在转弯时倾斜z轴时船是否在z轴上移动位置?

时间:2018-06-24 11:01:21

标签: c# unity3d monodevelop game-physics game-development

我正在统一制作一个2.5D游戏,这是关于一艘太空船更像传统太空船游戏一样在太空中飞行。

当玩家像飞机一样旋转时,我希望我的飞船稍微倾斜一点,就像这架飞机在转弯一样:

LIKE THIS PLANE IS TURNING

这是我的屏幕转弯时的样子:

This is what my screen ship looks while taking a turn

我希望它稍微倾斜一点,这是我现在的代码

    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轴位置的情况下倾斜船

运输初始位置:

Ships initial Position

当用户转船时:

When user turns the ship

我应该用什么其他方式转船?

1 个答案:

答案 0 :(得分:0)

为什么没有中间物体并使飞船成为该物体的子代?

因此,您无需旋转船,而可以旋转此中间对象,然后可以根据移动来移动船。这里的技巧是,中间对象仅沿一个轴旋转,而飞船仅沿一个轴旋转(相对于其父变换)。

这将避免任何Euler角/四元数/参考系移动,对于这样的简单问题,您就需要这样做。