所以我正在制作这个Unity游戏,我有一个游戏对象,即在游戏过程中移动和旋转,东西是枢轴点不坚持对象。当游戏开始时,它在现场旋转得很好但是当它被移动时,枢轴点没有跟随并且它仍然围绕其起始位置旋转。我正在使用"额外" gameobject首先在正确的位置获得枢轴点,这个额外的对象附加到第一个对象tho所以它应该跟随它。
任何想法可能是什么原因/解决方案?我把头发拉出来一整夜都在移动东西>。<
这是旋转的基本代码,但不过这是怀疑。
public float speed = 1f;
// Use this for initialization
void Start ()
{
}
// Update is called once per frame
void Update ()
{
if (Input.GetKey(KeyCode.W)) // Gå fremad
{
transform.position -= new Vector3 (speed * Time.deltaTime, 0.0f, 0.0f);
}
if (Input.GetKey(KeyCode.S)) // Gå baglæns
{
transform.position += new Vector3 (speed * Time.deltaTime, 0.0f, 0.0f);
}
if (Input.GetKey(KeyCode.Q)) // Strafe mod venstre
{
transform.position -= new Vector3 (0.0f, 0.0f, speed * Time.deltaTime);
}
if (Input.GetKey(KeyCode.E)) // Strafe mod højre
{
transform.position += new Vector3 (0.0f, 0.0f, speed * Time.deltaTime);
}
if (Input.GetKey(KeyCode.D)) // Drej mod venstre
{
transform.RotateAround (Vector3.zero, Vector3.up, 20 * Time.deltaTime);
}
if (Input.GetKey(KeyCode.A)) // Drej mod højre
{
transform.RotateAround (Vector3.zero, Vector3.up, -20 * Time.deltaTime);
}
答案 0 :(得分:0)
不要使用:
transform.RotateAround(Vector3.zero, Vector3.up, 20 * Time.deltaTime);
如果你使用它,你将始终围绕向量零旋转 - 即(0,0,0) - 在WORLD坐标系中(不是LOCAL)。
如果您想围绕自己的中心使用旋转对象:
transform.Rotate( xAngle, yAngle, zAngle, relativeTo );
如果你想相对于另一个对象旋转你的对象(我认为你不想这样),但无论如何:
transform.RotateAround(otherGameObject.transform.position, Vector3.up, 20 * Time.deltaTime);