【Unity3D 学习笔记】脚本操作游戏对象

2020-04-17  本文已影响0人  FrankNotes

游戏对象创建与销毁

直接创建

//创建正方体,可选类型有Cube、Capsule、Cylinder、Plane、Quad、Sphere
GameObject newGameObject = GameObject.CreatePrimitive(PrimitiveType.Cube);
newGameObject.name = "myCube";//赋名
newGameObject.tag = "myCubeTag";//标签
newgameObject.transform.position = new Vector3(0,0,0);//位置

克隆

//克隆对象myGameObject,设置位置、角度
GameObject newGameObject = Instantiate(myGameObject, new Vector3(0,0,0), Quaternion.identity) as GameObject;

//克隆预制体,需手动在Assets文件夹下建立Resources文件夹
GameObject newGameObject = (GameObject)Instantiate(Resources.Load("Prefabs/myGameObject"));

销毁

Destory(myGameObject);

 

获取游戏对象

通过对象名称获取对象

GameObject myGameObject = GameObject.Find("myCube") ;
  1. 可以查找任何层级的物体
  2. 可以指定层级或不指定,不指定时若有同名物体,则取列表中最后一个
  3. 不能查找隐藏物体
GameObject myGameObject = transform.Find("myCube")
  1. 只能查找到子集物体
  2. 查找其他层级需要完整路径
  3. 可以查找隐藏物体

通过标签获取游戏对象

GameObject = myGameObject;
GameObject[] myGameObjects;//声明

myGameObject = GameObjects.FindWithTag("myCube")//单个物体
myGameObjects = GameObjects.FindGameObjectsWithTag("myCube")//多个物体,附给数组变量
//对数组进行操作
foreach (GameObject everyGameobject in myGameObjects)
{
   Debug.Log("everyGameobject.name");
}

 

改变游戏对象的颜色

myObject.GetComponent<MeshRenderer>().material.color = new Color(1f, 0.4f, 0f, 0.7f);
myObject.GetComponent<MeshRenderer>().material.color = Color.red;

 

游戏对象的平移、旋转、缩放

平移

myCube.transform.Translate(Vector3.right * TransSpeed);
myCube.transform.position = new Vector3(-3.0f, -1.0f, 0f);

旋转

//自转
myCube.transform.Rotate(Vector3.forward * Time.deltaTime * RotateSpeed);  
//公转
myCube.transform.RotateAround(mySphere.transform.position, Vector3.right, RotateSpeed);
//直接到指定角度
myCube.transform.rotation = Quaternion.Euler(0f,1f,0f);
//平滑到指定角度
myCube.transform.rotation = Quaternion.Slerp(myCube.transform.rotation, Quaternion.Euler(0f, 270.0f, 0f), 0.1f);
myCube.transform.rotation = Quaternion.SlerpUnclamped(myCube.transform.rotation, Quaternion.Euler(10.0f, 27.0f, 50.0f), 0.1f);
//调整对象面向另一个物体
myCube.transform.LookAt(mySphere.transform.position);

缩放

myCube.transform.localScale = new Vector3(2.0f, 2.0f, 2.0f);
上一篇下一篇

猜你喜欢

热点阅读