为什么BoxCollider和GameObject移到错误的位置?

时间:2019-10-31 14:36:48

标签: c# unity3d rigid-bodies

我有一个空的GameObject作为障碍物。它具有Kinematic Rigidbody2D和BoxCollider2D。游戏开始时,它可以与坐在它上面的其他GameObject完美配合,但是当 active 布尔值翻转时,该对象将转换到错误的位置。而不是转到Vector3(0,-1060,0),而是转到Vector3(0,-2932.16,-219.24)。为什么这样做呢?

public static bool active = false;
private Rigidbody2D block;
private Vector3 endPosition = new Vector3(0, -1060, 0);

void Start()
{
    block = GetComponent<Rigidbody2D>();
}

void Update()
{
    if (active)
    {
        transform.position = endPosition;
        block.transform.position = endPosition;
        active = false;
    }
}

1 个答案:

答案 0 :(得分:0)

仅当本地位置不同时,才必须这样做。您最有可能在本地空间工作,而不是在世界空间工作。

尝试以下两种方法之一。 https://docs.unity3d.com/ScriptReference/Transform.InverseTransformPoint.html https://docs.unity3d.com/ScriptReference/Transform.TransformPoint.html