首页 文章

实例化远离源的Spawns对象?

提问于
浏览
1

所以我要做的就是将一个较小的立方体预制件放到一个大立方体的完全相同的位置和旋转上,这样它就会“分开” . 当我击中太空时,大立方体会按预期消失,但较小的立方体会从远处实例化 .

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)

这是一个非常简单的脚本,我花了两天时间试图找到类似的问题,但是它们都包括Quaternion,这与我的问题不太相似 .

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

EDIT2:'explo'在'void start'之前定义为'public GameObject explo',并通过Unity Editor分配 .

1 回答

  • 1

    检查"explosion"预制件中子多维数据集的位置 . 从您发布的屏幕截图和日志中看,预制件位于 (-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);
    

相关问题