c# - 为什么实例化时 Unity Prefab 值错误?

标签 c# unity3d

我有一个关于角色的 C# 脚本,它包含对预制件的引用。

在初始化期间,脚本运行:

weaponSlot = Instantiate(weaponPrefab) as Transform;

和集合

weaponSlot.parent = rightHand;

预制件包含武器的缩放信息,以及一些小的旋转和位置偏移,以使其看起来正确。

当游戏运行时,武器的实际位置从 rightHand 偏移了很多,尽管旋转被保留了下来。缩放比例也有点偏差,比预制尺寸小大约 40%。

任何关于为什么会发生这种情况的见解,甚至是关于检查内容的提示都将不胜感激!

最佳答案

确保将所有模型包裹在一个空的游戏对象中。根游戏对象下的大小、位置和方向需要正确。当您在父级下实例化游戏对象时,您需要确保将 localPosition 和 localEulerAngles 归零(设置它们 = Vector3.zero)。您还需要设置 localScale = Vector3.one。

在项目中应该是这样的:

预制件(零位置,零旋转,一个比例尺)
->模型(正确的缩放、旋转和位置)

然后你为它做 parent 。

关于c# - 为什么实例化时 Unity Prefab 值错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19758081/

相关文章:

c# - 在 C# 类库中使用 IConfiguration

c# - 在 .Net 3.5 中使用 Ninject 时 System.Core 的 System.Io.FileNotFoundException

c# - 我怎样才能找出是什么在制造垃圾?

ios - 我如何只响应 UI 图像中的触摸?

c# - INotifyPropertyChanged - 事件保持为空

c# - 如何在 C# 中处理多个并发交互的实体

c# - 使用 LINQ 打印数组

c# - 如何在 Unity 中实现和使用低级键盘 Hook 来禁用 Windows 快捷方式?

c# - www.text 未在 android 中显示完整数据

AndroidJavaObject.Call 数组传递错误(Unity for Android)