球员沿错轴旋转?

时间:2017-06-13 10:31:49

标签: c# unity3d game-physics

我有一个基本上是球体的角色,但是在y1,x1.2,z1(一个球体)上缩放。

我可以在任何给定的'pushDirection'中对对象施加力,这是角色的刚体位置减去主摄像机变换位置的产物(这可以很好地将角色朝着摄像机面向的方向移动 - '前进'在我的游戏中应始终朝向相机所朝向的方向。)

但是现在我正试图让对象旋转向前 - 在相机朝向的方向 - 而不是增加力量。我正在增加扭矩。 [这是我的预期轴的目标的粗略插图:

请注意,只要相机围绕物体旋转,旋转轴就会移动。

相反,我得到的结果是角色旋转,如下图所示:

如上所述,当摄像机移动时,旋转轴会随着摄像机一起移动。但我希望物体远离相机而不是向左旋转。 (注意,在两个屏幕截图中,我都没有重力暂停对象以尝试调试其旋转)。

我的脚本的相关部分如下:

void Start ()
    {
        rb = GetComponent<Rigidbody>();
        pushForward =  rb.transform.position -
        Camera.main.transform.position;
    }
 
    void Update()
    {
        speed = rb.velocity.magnitude;
        pushForward =  rb.transform.position - Camera.main.transform.position;
 
        if (Input.GetKey("w"))
        {
            isForward = true;
        }
        else
        {
            isForward = false;
        }
    }
 
    void FixedUpdate ()
    {
        // IF KEY IS DOWN, MOVE //
        if (isForward == true)
        {
            float turn = Input.GetAxis("Vertical");
            rb.AddTorque(pushForward * torque * turn);
            Debug.Log("Moving Forward");
        }
    }

我玩过这么多,我无法理解它。我也完全感到困惑,好像我将Input.GetAxis更改为“Horizo​​ntal”,调试消息“Moving Forward”弹出正常,但我没有在对象中获得任何类型的旋转 - 根本没有。

如果有人能指出我正确的方向,我真的很感激,我让自己有点困惑。

1 个答案:

答案 0 :(得分:0)

如果我理解正确,为了获得您想要的旋转,您需要将myCommand.Cancel()乘以pushForward

即:

Vector3.down