我有一个基本上是球体的角色,但是在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更改为“Horizontal”,调试消息“Moving Forward”弹出正常,但我没有在对象中获得任何类型的旋转 - 根本没有。
如果有人能指出我正确的方向,我真的很感激,我让自己有点困惑。
答案 0 :(得分:0)
如果我理解正确,为了获得您想要的旋转,您需要将myCommand.Cancel()
乘以pushForward
。
即:
Vector3.down