我有一个空的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;
}
}
答案 0 :(得分:0)
仅当本地位置不同时,才必须这样做。您最有可能在本地空间工作,而不是在世界空间工作。
尝试以下两种方法之一。 https://docs.unity3d.com/ScriptReference/Transform.InverseTransformPoint.html https://docs.unity3d.com/ScriptReference/Transform.TransformPoint.html