C# - 如何在Unity中使两个游戏对象始终具有相同的y值

3

我当前在场景中有一个已经移动过的立方体。我希望另一个立方体始终具有相同的y值。因此,如果第一个立方体向下移动了10个单位,我希望另一个立方体也做同样的移动。

我的第一个立方体是在编辑器中手动创建的,但是我的另一个立方体是使用脚本放置的。谢谢!

1个回答

7

如前所述,您可以使用父子关系,但是每次父级移动时,子级的x、y和z坐标都会发生变化。

如果您只想跟随另一个对象的y坐标而不是其他坐标,则无法使用父子关系。

相反,您可以使用脚本(灵感来自:https://answers.unity.com/questions/543461/object-follow-another-object-on-the-x-axis.html

using UnityEngine;
 using System.Collections;

 public class SameYCoordinateAsOther : MonoBehaviour {

     Transform otherTransform;

     void Start() {
        // you can set a reference to the "parent" cube
        otherTransform = GameObject.Find("cube1").transform;
     }

     void Update() {
        // here we force the position of the current object to have the same y as the parent
        transform.position = new Vector3(transform.position.x, otherTransform.position.y, transform.position.z);
     }
}

您只需将此脚本附加到任何必须在y轴上“跟随”第一个立方体的对象上。

此脚本将强制第二个对象具有与第一个对象相同的y值。

如果您希望它们具有相同的值,而仅希望移动量相同,则会更加复杂。


那个完美地运行了,但是我有一个建议:理想情况下,如果你通过脚本使你的“父级”移动,你不希望在“子级”的Update()中得到重新定位。为了优化,你可以将这行代码订阅到父级的回调函数中。 - Lotan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接