一,常用核心类
1.Transform
主要用于控制物体的旋转、移动、缩放
成员变量
A, transform.position位置移动
transform.position = new Vector3(+10, 0, 0);
B、transform.rotation旋转角度
transform.rotation = Quaternion.Euler(0, 45, 0);
C、transform.localScale 自身缩放
transform.localScale=new Vector3(2,1,1);
成员方法
A、Translate 向某方向移动物体多少距离。
B、Rotate 旋转
C、RotateAround 按照多少度在世界坐标的某位置轴旋转物体。
一个游戏对象围绕另一个游戏对象旋转
transform.rotation和Rotate的区别:
Rotate()方法是:旋转多少度。在原有的基础上累加,即旋转了多少角度
rotation属性是:旋转到某个角度,就是是在update中每帧都执行。但每次旋转到的角度都是5,所以是旋转到5度。
2.GameObject
GameObject和gameObject的区别
GameObject是游戏对象类的基类
gameObject是脚本挂载的对象
3.Vector3
向量(Vector3)
既有大小又有方向的量叫做向量。在空间中,向量用一段有方向的线段来表示。
可用于描述具有大小和方向两个属性的物理量,例如物体运动的速度、加速度、摄像机观察方向、刚体受到的力等都是向量。
4.Time
Time.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
查找
通过名称来查找游戏对象
GameObject cube1=GameObject.Find("Player");
GameObject cube2=GameObject.FindWithTag("Player");
6.添加,获取组件
//1、把Move这个脚本加到cube这个游戏对象上
cube.AddComponent("Move");
//2、给游戏物体添加刚体
cube.AddComponent("Rigidbody");
//3、给游戏物体添加球体碰撞器
cube.AddComponent("BoxCollider");
//1、获取脚本组件Move
Move m=cube.GetComponent<Move>();
//2、获取刚体组件
Rigidbody r=cube.GetComponent<Rigidbody>();
7.Random
float a=Random.value; //返回0.0(包括)到1.0(包括)之间的数。
int b=Random.Range(0,100) ; //包括最小但不包括最大
float c=Random.Range(0.0f,5.5f); //包括最大和最小
8.Input
鼠标事件
GetMouseButton(0):按下鼠标左键不动,程序会一直运行,松开左键程序停止运行。
GetMouseButton(2):按下鼠标中键不动,程序会一直运行,松开中键程序停止运行。
GetMouseButton(1):按下鼠标右键不动,程序会一直运行,松开右键程序停止运行。
GetMouseButtonDown(0):按下鼠标左键时,程序运行一次
GetMouseButtonDown(1):按下鼠标右键时,程序运行一次
GetMouseButtonUp(2):按下鼠标中键时,程序不运行,松开中键时,程序运行一次
键盘事件
GetKey 当通过名称指定的按键被用户按住时返回true
GetKeyDown 当用户按下指定名称的按键时的那一帧返回true。
GetKeyUp 在用户释放给定名字的按键的那一帧返回true。
GetAxis("Horizontal")和GetAxis("Vertical") 水平轴和垂直轴
自定义按钮
GetButton 根据按钮名称返回true当对应的虚拟按钮被按住时。
GetButtonDown 在给定名称的虚拟按钮被按下的那一帧返回true。
GetButtonUp 在用户释放指定名称的虚拟按钮时返回true。
9.协程
协同程序,即将主程程序运行时同时开启另一段逻辑处理来协同当前程序的执行。换句话说,开启协同程序就是开启一个线程。
使用StartCoroutine(string methodName)可以开启一个线程。
Yield语句是一种特殊类型的Return(返回)语句,它可以确保函数在下一次被执行时,不是从头开始,而是从Yield语句处开始。
协程其实就是一个IEnumerator(迭代器)。迭代器方法运行到 yield return 语句时,会返回一个表达式并保留当前在代码中的位置。 当下次调用迭代器函数时执行从该位置重新启动。
.
二,物理引擎
1.刚体
Rigidbody(刚体)组件可使游戏对象在物理系统的控制下来运动,任何游戏对象只有添加了刚体组件才能受到重力的影响。
2.碰撞器
碰撞器分类:
盒形碰撞器、球形碰撞器、 胶囊碰撞器、 网格碰撞器、 车轮碰撞器等
碰撞的必备条件:
1、两个物体要有碰撞器
2、一个物体要有刚体
3.碰撞检测
在unity3d中,能检测碰撞发生的方式有两种,一种是利用碰撞器,另一种则是利用触发器
一)碰撞器是一群组件,包含了很多种类
二)所谓触发器,只需要在检视面板中碰撞器组件中勾选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");
}