1.Transform
Transform组件是Unity3D的重点之一,主要用于控制物体的旋转、移动、缩放。
A、transform.position位置移动
transform.position = new Vector3(+10, 0, 0);
B、transform.rotation旋转角度
transform.rotation = Quaternion.Euler(0, 45, 0);
transform.localScale 自身缩放
transform.localScale=new Vector3(2,1,1);
RotateAround (point : Vector3, axis : Vector3, angle : float) : void
按照多少度在世界坐标的某位置轴旋转物体。
一个游戏对象围绕另一个游戏对象旋转
transform.RotateAround(sphere.position,Vector3.up,1)
transform.rotation和Rotate的区别:
Rotate()方法是:旋转多少度。在原有的基础上累加,即旋转了多少角度
rotation属性是:旋转到某个角度,就是是在update中每帧都执行。但每次旋转到的角度都是5,所以是旋转到5度。
比如你只想让他旋转到多少, 用rotation; 假如想让他一直转,可以用Rotate
rotation直接改变了数值, 以达到旋转效果
Rotate应用一个的旋转角度每秒1度慢慢的旋转物体
2.Vector3
物体的坐标向量
3.GameObject
GameObject和gameObject的区别
GameObject是游戏对象类的基类
gameObject是脚本挂载的对象
4.Time
Time.deltaTime:表示从上一帧到当前帧的时间,以秒为单位。
Time.timeScale:时间缩放,默认值为1,若设置<1,表示时间减慢,若设置>1,表示时间加快,可以用来加速和减速游戏,非常有用。
5.销毁与克隆
//在预设体的位置克隆游戏对象
GameObject go1=Instantiate(cube);
//在固定位置克隆游戏对象
//Quaternion.identity 游戏对象不旋转:Quaternion(0,0,0,0)
GameObject go2 =Instantiate(cube,new Vector3(0,0,5),Quaternion.identity);
销毁
Destroy(go1); //直接销毁对象go1
Destroy(go2,3); //停3秒后销毁对象go2
6.Random
float a=Random.value; //返回0.0(包括)到1.0(包括)之间的数。
int b=Random.Range(0,100) ; //包括最小但不包括最大
float c=Random.Range(0.0f,5.5f); //包括最大和最小
物理引擎
1.刚体
2.碰撞器 XX Collider
(一)碰撞器是一群组件,包含了很多种类,比如:Box Collider,Capsule Collider等,这些碰撞器应用的场合不同,但必须加到GameObject身上。
(二)所谓触发器,只需要在检视面板中碰撞器组件中勾选Is Trigger属性选择框。
(三)给主角添加刚体(Rigidbody)组件,并且取消刚体组件的重力选项UseGravity。
碰撞器
// 碰撞接触的那一帧被调用
void OnCollisionEnter(Collision collision) {
Debug.Log("enter");
Debug.Log(collision.gameObject.name);
}
// 碰撞接触的每帧都被调用
void OnCollisionStay(Collision collision) {
Debug.Log("Stay");
}
// 碰撞结束被调用
void OnCollisionExit(Collision collision) {
Debug.Log("Exit");
}
触发器
触发器可以穿透,所以把重力去掉
// 触发接触的那一帧被调用
void OnTriggerEnter(Collider other) {
Debug.Log("enter");
Debug.Log(other.gameObject.name);
}
//触发接触的每帧都被调用
void OnTriggerStay(Collider other) {
Debug.Log("Stay");
}
// 触发结束被调用
void OnTriggerExit(Collider other) {
Debug.Log("Exit");
} 屏幕坐标转世界坐标
Vector3 mousePos = Input.mousePosition;//获取鼠标位置
Vector3 dir = mousePos - Camera.main.transform.position;//偏移量
Vector3 nomaidir = Vector3.Project(dir, Camera.main.transform.forward);//矢量
Vector3 worldPos = Camera.main.ScreenToWorldPoint(new Vector3(mousePos.x, mousePos.y, nomaidir.magnitude));//把鼠标的屏幕坐标转换成世界坐标
if (Input.GetMouseButtonDown(0))
{
GameObject go = Instantiate(qiuti, new Vector3(worldPos.x, worldPos.y, worldPos.z - 5), Quaternion.identity);
Destroy(go, 3f);
}