我有一个 GameObject 作为对象生成器,它们是沿 y 轴生成的,即直线,根据此函数:
public void Generar() {
Instantiate (obj [Random.Range (0,obj.Length)], transform.position, Quaternion.identity);
InvokeRepeating ("Generar", 3, 180);
}
如何使它们平行于 x 轴?我已经在生成器中放入了必须以正确方式生成的对象,平行于 x 轴,但它们还是像以前一样出来,为什么?我试图把上面的功能transform.position.x
,但我得到错误。
嗯,这有点令人困惑->如何旋转平行于 y 轴的对象,使其平行于 x 轴?,以及显示的代码,“但是”也许是我,但是查看您的代码和其他部分->如何使它们与x轴平行?我会给你留下一些代码,这样你就可以确定或理解他们做了什么,我希望这是你所问的。
如果我正确理解你的问题,你想在 x 轴上实例化它,但是你将它作为位置向量传递,脚本具有的对象的位置,以这种方式 ->
transform.position
,我想是因为类的名称,也许它是您将用于场景的虚拟对象,即使它没有任何关联的“网格”模型,它也有一个变换,因此您可以执行 -> transform.position,这很有效但它在空间中占据了脚本所具有的对象的位置,因此它将在该位置实例化:现在尝试使用
Vector3.right
将在x + 1
相对于空间的位置实例化它的东西,因为我想这个对象的移动将由您正在实例化的对象的脚本或从其他地方控制。尽管如此,如果实例化没有您期望基于原始模型的旋转,您可以使用Arie CwHat所说的关于使用
Quaternion.LookRotation(Vector3.up)
try that 除了上面的内容Vector3.right
。你说......我已经将必须以正确方式生成的对象放入生成器中,平行于 x 轴...... - 你把它放在哪里。
假设你有这样的东西:
所以我们这样使用它:
好吧,正如之前所说
transform.position
,您正在传递脚本所具有的对象的位置,但是如果您只想获取脚本所具有的对象的位置,但仅在x
这一个中,您可以尝试这样的事情:注意
transform,position
为其他人的变化Vector3
。另一方面,如果您想要控制实例化对象的旋转,您可以尝试以下操作:
在上面我们使用
Vector3 rotar_y
基于 Euler 1来分配旋转但它
Instantiate
需要一个Quaternion
for 旋转,所以我们可以Quaternion.Euler
像这样使用它,得到一个
Quaternion
这是我们在Instantiate
上面代码中看到的方法中使用的:1