【问题标题】:Instantiate Spawns Object Away from Source?实例化生成远离源的对象?
【发布时间】:2016-11-23 00:51:51
【问题描述】:

所以我想做的是在一个大立方体的完全相同的位置和旋转上生成一个小立方体的预制件,这样它就会“分裂”。当我点击空间时,大立方体按预期消失,但较小的立方体从远处实例化。

Here's a .gif of what is happening.

 void Update () {
         if (Input.GetKeyDown("space"))
         {
             Instantiate(explo, gameObject.transform.position, Quaternion.identity);
             Destroy(gameObject);
         }
         Debug.Log("The Rotation");
         Debug.Log(explo.transform.rotation);
         Debug.Log("The Position");
         Debug.Log(explo.transform.position);
     }

调试日志:

 The Rotation
 (0.0, 0.0, 0.0, 1.0)
 The Position
 (-5.5, -2.4, 3.5)

这是一个非常简单的脚本,我花了 2 天时间试图找到一个与我类似的问题,但它们都包含四元数,这与我的问题不相似。

编辑:将 gameObject.transform.rotation 更改为 Quaternion.identity 似乎完全重置了对象的旋转。

EDIT2:“explo”在“void start”之前定义为“public GameObject explo”,并通过 Unity 编辑器分配。

【问题讨论】:

  • explo 的定义是什么?您将此脚本附加到什么游戏对象上?
  • 脚本附加到一个名为“Big Cube”的对象上,而“explo”是我通过统一编辑器附加的一个预制件,它被称为“Smaller Cubes”。
  • explo 有附加脚本吗?这是您的确切代码吗?我对explo.localScale 的编译方式感到困惑,因为我认为它应该是explo.transform.localScale
  • explo 没有附加任何脚本,将explo.localScale 更改为explo.transform.localScale 仍然返回相同的结果。 (如果在我没有注意到之前有错误,它仍然编译没有错误?)
  • 附注(我认为这与问题无关); Debug.Log(explo.transform.position); 显示的是您的预制件的位置,而不是您添加到场景中的预制件实例的位置。如果要查看场景中对象的位置,则需要类似GameObject cube = Instantiate(explo, gameObject.transform.position, Quaternion.identity) as GameObject; 的内容,然后显示cube 的位置。

标签: c# unity3d instantiation


【解决方案1】:

检查子立方体在“爆炸”预制件中的位置。从您发布的屏幕截图和日志中,您的预制件看起来位于(-5.5, -2.4, 3.5),并且您的预制件中较小的立方体靠近该位置。当您孤立地查看预制件时,它看起来很好,因为所有较小的立方体都位于预制件的中心周围。但是,当您在场景中实例化预制件时,较小的立方体将保留其预制位置。因此,如果您在运行游戏时将预制件放置在(0, 0, 0),子立方体仍将定位在(-5.5, -2.4, 3.5) 附近。相对于(0, 0, 0) 将预制件中的所有小立方体放置在您在场景中的任何位置实例化预制件时,它们会显示在您期望的位置。

另一件事:Debug.Log(explo.transform.position); 行实际上显示了您在 Unity 编辑器中分配给预制件的位置,而不是在场景中实例化的预制件的位置。要显示对象在场景中的位置,请存储对实例化对象的引用,然后显示该对象的位置。像这样

GameObject gameObject = Instantiate(explo, gameObject.transform.position, gameObject.transform.rotation) as GameObject;
Debug.Log(gameObject.transform.position);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-11
    • 2020-08-11
    • 2010-10-27
    • 1970-01-01
    • 2015-06-16
    • 2020-09-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多