我的支点不遵循我的游戏对象

时间:2015-06-01 05:12:18

标签: c# unity3d gameobject

所以我正在制作这个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);
    }

1 个答案:

答案 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);