要unity3d在地图上画多个箭头模型,箭头是用3dmax 制作导入的。要一次复制出多个模型,我只想到用实例化,instantiate 函数,
staticfunctionInstantiate (original : Object, position :Vector3, rotation :Quaternion) : Object
第1个参数:对象名称,第2个参数:对象的位置,第3个参数对象的角度
我主要是对quaternion 四元组理解不好,不用直接调用角度,后来只摸索出来用下面的方法调整角度
(代码先寻找名字为 "mark" 的GameObject ,然后实例化)
脚本为js的,放在主摄像机上,hierarchy 里面建立一个一个名字为“mark"的gameobject就行,gameobject或者为cube、plane什么的都行。
private var go : GameObject;
private var clone : GameObject;
private var temp : Vector3;
private var temp1 : Quaternion;
function Start()
{
var i : int = 0;;
go = GameObject.Find("mark");
go.active = false;
for (var child : Transform in go.transform) {
++i;
child.active = false;
child.parent.active = false;
}
temp = go.transform.position; `
temp.x += 10;
temp.z += 10;
temp1 = Quaternion.identity;
for (i = 0; i < 3; i++)
for (j = 0; j < 3; j++)
{
temp.x += 10;
temp.z += 10;
temp1.eulerAngles = Vector3(90,30 + (j * 50),0);
clone = Instantiate(go , temp , temp1);
}
}
主要是 temp1.eulerAngles = Vector3(90,30 + (j * 50),0); 这代码调整实例化对象的角度。
temp1 = Quaternion.identity; 这一句可以省略;
此段代码用来隐藏 go 及其go 的所有子对象,我不知道Unity有函数直接实现此功能么,如果哪位大虾知道,请告诉我,谢谢啦。
go.active = false;
for (var child : Transform in go.transform)
{ ++i;
child.active = false;
child.parent.active = false;
}