我有一个基本上是球体的角色,但是在y1,x1.2,z1(一个球体)上缩放 .
我可以在任何给定的'pushDirection'中对对象施加力,这是角色的刚体位置减去主摄像机变换位置的产物(这可以很好地将角色移动到摄像机面向的方向 - 在我的'前进'中游戏应始终朝向相机所面向的方向) .
但是现在我试图让对象向前旋转 - 在相机面向的方向 - 而不是增加力量 . 我'm adding torque instead. [Here'是一个粗略的插图截图,我的目标与我的预期轴:
请注意,只要相机围绕对象旋转,旋转轴就会移动 .
相反,我得到的结果是角色旋转,如下图所示:
如上所述,当摄像机移动时,旋转轴会随着摄像机一起移动 . 但我希望物体远离相机而不是向左旋转 . (注意,在两个屏幕截图中,我都没有重力暂停对象以尝试调试其旋转) .
我脚本的相关部分如下:
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更改为“Horizontal”,调试消息“Moving Forward”弹出正常,但我没有在对象中获得任何类型的旋转 - 根本没有 .
如果有人能指出我正确的方向,我真的很感激,我让自己有点困惑 .
1 回答
如果我理解正确,为了获得你想要的旋转,你需要与
Vector3.down
交叉乘以pushForward
.即: