【发布时间】: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