Unity3D:将 child 移动到 parent 轨道
Unity3D: Moving a child to orbit a parent
我做了一个游戏,我制作了两个球体,一个 child 球体和一个 parent 球体。 parent 球体比 child 球体大,我试图让 child 围绕 parent 球体移动。
在下面的代码中,child 球体沿圆周运动。问题是它不会相对于 parent 移动,所以每当我移动 object 的 parent 时,child 会停留并且不再围绕 parent,而是自由移动。我承认这是一个很多问题,但如果有人可以做出贡献,将不胜感激。这是我移动球体的代码(与 parent object 无关):
void Update(){
timeCounter += Input.GetAxis("Horizontal") * Time.deltaTime;
float x = Mathf.Cos (timeCounter);
float y = Mathf.Sin (timeCounter);
float z = 0;
transform.position = new Vector3 (x, y, z);
}
我还打算移动 parent 球体,我希望 child 球体跟随并仍然相对于 parent 球体移动。
whenever I move the parent of the object, the child stays and no
longer moves around the parent
那是因为您正在通过
移动球体
transform.position
什么时候应该
transform.localPosition
要么那样做,要么你可以做
transform.position = transform.parent.position + new Vector3 (x, y, z);
编辑:
就个人而言,我会做后者,甚至不做球体的父级,这样你就可以旋转母球体或独立操纵它,而不会以奇怪的方式影响另一个球体
我做了一个游戏,我制作了两个球体,一个 child 球体和一个 parent 球体。 parent 球体比 child 球体大,我试图让 child 围绕 parent 球体移动。
在下面的代码中,child 球体沿圆周运动。问题是它不会相对于 parent 移动,所以每当我移动 object 的 parent 时,child 会停留并且不再围绕 parent,而是自由移动。我承认这是一个很多问题,但如果有人可以做出贡献,将不胜感激。这是我移动球体的代码(与 parent object 无关):
void Update(){
timeCounter += Input.GetAxis("Horizontal") * Time.deltaTime;
float x = Mathf.Cos (timeCounter);
float y = Mathf.Sin (timeCounter);
float z = 0;
transform.position = new Vector3 (x, y, z);
}
我还打算移动 parent 球体,我希望 child 球体跟随并仍然相对于 parent 球体移动。
whenever I move the parent of the object, the child stays and no longer moves around the parent
那是因为您正在通过
移动球体transform.position
什么时候应该
transform.localPosition
要么那样做,要么你可以做
transform.position = transform.parent.position + new Vector3 (x, y, z);
编辑: 就个人而言,我会做后者,甚至不做球体的父级,这样你就可以旋转母球体或独立操纵它,而不会以奇怪的方式影响另一个球体