Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 实例化使对象远离源?_C#_Unity3d_Instantiation - Fatal编程技术网

C# 实例化使对象远离源?

C# 实例化使对象远离源?,c#,unity3d,instantiation,C#,Unity3d,Instantiation,所以我想做的是,在一个大立方体的位置和旋转方向完全相同的情况下,产生一个由小立方体组成的预制体,这样它就“分裂”了。当我点击空格键时,大立方体按预期消失,但小立方体从远处实例化 调试日志: The Rotation (0.0, 0.0, 0.0, 1.0) The Position (-5.5, -2.4, 3.5) 这是一个非常简单的脚本,我花了2天的时间试图找到一个与我类似的问题,但它们都包含了四元数,这与我的问题不同 编辑:将gameObject.transform.rotat

所以我想做的是,在一个大立方体的位置和旋转方向完全相同的情况下,产生一个由小立方体组成的预制体,这样它就“分裂”了。当我点击空格键时,大立方体按预期消失,但小立方体从远处实例化

调试日志:

 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:“爆炸”在“void start”之前定义为“public game object expo”,并通过Unity编辑器进行分配。

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

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

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

expo
定义为什么?您将此脚本附加到哪个游戏对象?脚本附加到一个名为“大立方体”的对象上,“expo”是我通过unity编辑器附加的一个预制体,称为“小立方体”。您是否将任何脚本附加到
expo
?这是你的密码吗?我对
expo.localScale
如何编译感到困惑,因为我认为它应该是
expo.transform.localScale
expo
没有附加脚本,将
expo.localScale
更改为
expo.transform.localScale
仍然返回相同的结果。(如果在我没有注意到之前有一个错误,它仍然编译没有错误?)旁注(我认为这与问题无关)<代码>Debug.Log(expo.transform.position)显示预设的位置,而不是添加到场景中的预设实例的位置。如果您想查看对象在场景中的位置,您需要类似于
GameObject cube=实例化(expo,GameObject.transform.position,Quaternion.identity)的东西作为GameObject
然后显示
立方体的位置
GameObject gameObject = Instantiate(explo, gameObject.transform.position, gameObject.transform.rotation) as GameObject;
Debug.Log(gameObject.transform.position);