Unity3D:移动子轨道到父轨道

本文关键字:轨道 移动 Unity3D | 更新日期: 2023-09-27 17:54:15

我制作了一款游戏,其中我制作了两个球体,一个是子球体,一个是父球体。父球体比子球体大,我试着让子球体绕着父球体运动。

在下面的代码中,子球体在一个圆圈中移动。问题是,它不会相对于父对象移动,所以每当我移动对象的父对象时,子对象就会保持不变,不再围绕父对象移动,而是自由移动。我承认这是一个很大的要求,但如果有人能贡献,这将是非常感激的。以下是我所拥有的移动球体的代码(与父对象无关):

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);
}

我还打算移动父球体,我希望子球体跟随并仍然相对于父球体移动。

Unity3D:移动子轨道到父轨道

无论何时移动对象的父对象,子对象都保持不变

这是因为你在通过

移动球体
transform.position

而不是

transform.localPosition

或者你可以这样做

transform.position = transform.parent.position + new Vector3 (x, y, z); 

编辑:就我个人而言,我更倾向于使用后者甚至不使用父球体,这样你就可以旋转母球体或独立操作它而不会以奇怪的方式影响另一个球体