`

unity3d 学习摸索(一) 实例化GameObject 并调整其角度

 
阅读更多

要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;
 }
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics