创建一个角色到场景的指定坐标,并放到指定目录下

来源:互联网 发布:图片在线缩小软件 编辑:程序博客网 时间:2024/04/30 15:48

有时候需要在场景中自动添加一些树木(这些树木的模型已近做成名称为'DemoTrees'的一个Prefab),种在指定的坐标点上,而且树木要放在指定的Tree目录下(即所有的树木都是Tree的子物体)。

<核心代码>

Public void CreateTree(float x, float y, float z){

GameObject  tree = (GameObject)Resources.Load(“DemoTrees”,  typeof(GameObject)); // 导入这棵树

GameObject aNewTree = GameObject.Instantiate(tree, new Vector3(x, y, z), Quaternion.identity) as GameObject;   //把树克隆出来

aNewTree.name = "Tree001";  // 给这棵树起名字

aNewTree.transform.parent = GameObject.Find("某个路径").transform;  // 将自己的父物体设置成“某个路径”

aNewTree.transform.position = new Vector3(aNewTree.transform.parent.x, aNewTree.transform.parent.y, aNewTree.transform.parent.z);  // 放在父物体的原点(相对坐标)

aNewTree.transform.localScale = new Vector3(100, 100, 100);   // 设置这棵树的大小

}

在做游戏的时候,感觉这一系列的操作感觉经常会用到:

比如进入一个新的场景、副本的时候,要初始化玩家的位置。

再比如要把摄像机附给玩家,塞到玩家“体内”,并给相对坐标、旋转角度等等。

这里说到初始旋转角度,需要注明一下,Unity不允许直接设置Rotation中X.Y.Z的值,我们需要这样做才可以:

先来一个Quaternion :

Quaternion quate = Quaternion.identity;

然后设置他的角度:

quate.eulerAngles = new Vector3(45, 0, 0);  // 表示设置x轴方向旋转了45度

最后再把quate付给你要操作的Gameobject:

gameobject.transform.rotation = quate;

这样就搞定了。