我们如何在统一 3D 中一起移动两个?

Posted

技术标签:

【中文标题】我们如何在统一 3D 中一起移动两个?【英文标题】:How we can move two together in unity 3D? 【发布时间】:2021-05-22 03:28:22 【问题描述】:

实际上我想将两个子对象相互连接,这样当一个对象的大小增加时,两个对象都应该一起移动并改变它的位置。我想在预制件中做到这一点有可能吗?

这是层次结构截图:

基本上我想增加玻璃的大小(side1_screen1 的子对象),但随着玻璃,我的支持(子对象)的大小也在增加。

但是当我单独增加玻璃尺寸时,我的支撑位置不会改变,所以当玻璃尺寸增加时可以使用的任何方法,我的支撑尺寸都不应该增加。

任何方法都会受到赞赏。提前致谢。

【问题讨论】:

【参考方案1】:

我不知道这是否是您所要求的,但您可以通过将多个子对象作为父对象简单地“连接”到同一个对象。在这个例子中,我简单地创建了两个子对象和一个空的 GameObject 作为容器。每当您缩放、旋转或移动容器时,子对象都会做同样的事情。

在层次结构中,如果不将其中一个作为父对象,您就无法将多个子对象“连接”到彼此。

您可以尝试的另一种(快速而肮脏的)方法是创建一个引用两个游戏对象的变换组件的脚本,然后根据另一个设置其中一个。

你可以把它放在你的 Update() 方法中:

firstChild.transform.position = secondChild.transform.position + Vector3 offsetValue (otherwise they will be in the same position)

firstChild.transform.rotation = secondChild.transform.rotation

firstChild.transform.localScale = secondChild.transform.localScale

在您创建脚本并根据自己的喜好引用所有内容后,您可以简单地将父对象拖到您的项目文件夹之一中,使其成为预制件。

【讨论】:

以上是关于我们如何在统一 3D 中一起移动两个?的主要内容,如果未能解决你的问题,请参考以下文章

如何在统一的 3d 空间中平移?

如何使跟踪渲染器不受统一 3d 中 z 轴运动的影响

如何使用 C# 创建一个对象以统一在两个位置之间移动,为啥我的代码不起作用?

如何在 Unity 3D 中使用称重秤?

unity 3d 场景中如何随着摄像机的移动在摄像机周围一定范围内是精模超过范围就切换成简模呢

如何使用 playerprefs 在统一 3d 中保存我的游戏货币