围绕相对于模型位置和旋转的点旋转

时间:2012-11-15 19:05:04

标签: c# rotation unity3d

我在Unity(C#)中有一个空间模型,这个模型是跳伞。它始终面向地面,但X和Z旋转。我想要的效果是,当我旋转而不是围绕模型中心旋转时,我会绕着一个点旋转一个距离,直接向左或向右模型,取决于。我已经有了旋转逻辑,但我没有的是如何确定“X像素向右”的世界位置,因为旋转会改变左/右。例如:

当我开始时,左边是-1,0;右边是+1,0 x 我绕左转45度。左边仍然是-1,0。但现在我的位置是(〜)-.7,.7。由于我的“左”仍指向-1,0,“右突然指向(〜)0,1.4

那么,给定模型的Vector3位置,我如何确定模型的X,Z旋转和偏移,其中“向左”和“向右”是。

对于那些视觉类型,Just Cause 2做得对(虽然有时很难说): http://youtu.be/C6H3PPfx1KI?t=2m

谢谢大家。

1 个答案:

答案 0 :(得分:2)

听起来你只想做以下事情:

  1. 在模型空间left = (-1, 0, 0)right = (1, 0, 0)中分配左/右坐标。
  2. 将旋转点从模型空间转换为世界空间(例如worldLeft = transform.TransformPoint(left))。
  3. 围绕世界空间点(transform.RotateAround(worldLeft, Vector3.up, speed * Time.deltaTime))旋转。