我做了一个游戏,我制作了两个球体,一个儿童球体和一个父球体。父球体比子球体大,我试图让孩子在父球体周围移动。
在以下代码中,子球体以圆圈形式移动。问题是它不会相对于父对象移动,所以每当我移动对象的父对象时,子进程停留并且不再在父对象周围移动,而是自由移动。我接受这个问题很多,但如果有人可以做出贡献,我将不胜感激。这是我移动球体的代码(不是与父对象有关):
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);
}
我还打算移动父球体,我希望子球体跟随并仍然相对于父球体移动。
答案 0 :(得分:5)
每当我移动对象的父级时,孩子都会停留,不会 更长时间围绕父母移动
那是因为你正在通过
移动球体transform.position
什么时候应该
transform.localPosition
或者你可以做到
transform.position = transform.parent.position + new Vector3 (x, y, z);
编辑: 就个人而言,我会做后者甚至不是球体的父母,这样你可以旋转母球或独立操纵它而不会以奇怪的方式影响其他球体