要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; }