18什么是协程、它是如何执行的
普通方法:会等普通方法执行完后向下执行。
协程方法:不等协程方法执行完,就继续向下执行.也是可以暂停的
Coroutines
1.返回值是IEnumerator
2.返回参数的时候用yield return null/0
3,协程方法的调用,StartCoroutine(需要调用的协程方法的名字)
4暂停yield return new WaitForSeconds(需要暂停的时间);
5.协程 同主线一起进行的支线 和主线一起执行
19使用Coroutine实现颜色动画渐变
Void Update()
{
if(input.GetKeyDown(KeyCode.Space))
{
startCoroutine(Fade());
}
}
IEnumerator Fade()
{
for(float i=0;i<=1;i+=0.1f)
{
cube.GetComponent().material.color=new Color(i,i,i,i);
yield return new WaitForSeconds(0.1f);
}
}
20Coroutine协程的开启和关闭
StopCoroutine(暂停携程的IEnumertor)
private IEnumerator ie;
StartCoroutine(ie)://开启协程
StopCoroutine(ie);//关闭协程
StopAllCoroutines暂停所有的携程;
21跟鼠标相关事件函数OnMouseXXX讲解
OnMouseDown();当鼠标按下时触发
OnMouseUp();当鼠标抬起时触发
OnMouseDrag();当鼠标已经按下但没有抬起时触发
OnMouseEnter();当鼠标在游戏物体身上但没有按下鼠标时触发
ONMouseExit();当鼠标离开游戏物体时触发
OnMouseOver();当鼠标在游戏物体身上时无论是鼠标按下或没有按下只要鼠标在游戏物体身上就触发。
22Mathf里面的静态常量
Mathf 数学函数
PI 圆周率
Deg2Rad 度数转弧度
Rad2Deg 弧度转度数
Epsilon 小数,不计数,比0大
infinity 无限大
Abs 取绝对值;
Ceil 向上取整返回Float类型
Floor向下取整返回Float类型
23Mathf中的Clamp限定方法
CeilToInt 向上取整返回Int类型
Clamp 加紧,范围,(Value,min,max)
void TakeDamage() 伤害计算;
Clamp01限定在01之间
Mathf.Clamp(float value,float min,flaot max); valur为自己定义的数值。如果value小于min则将value改为min,如果value大于min且小于max则value为自身值,如果value大于max则将value改为max。
24Mathf中的常用方法
Mathf.ClosestPowerOfTwo(value)输出value最近的2的平方数
Mathf.DeltaAngle();返回角度之间的最小夹角。
Exp e的n次方Lerp 取差值;
Mathf.Sqrt 平方根
Mathf.ClosesPowerOfTwo(int value);取离value最近的2的多次方
Floor 向下取整得Float
Max 取数组中最大的数
Min 取数组中最小的数
Pow(n,x)n的x次方Sqrt(n)n的开平方
25关于游戏开发中的插值运算差值运算
Lerp(float a,float b,float t):a为最小值,b为最大值,t为两个值中间的比例,t=0.5函数返回两个值的中间值
通常用于动画(运动)效果使动画(运动)先快后慢
Lerp (开始值,结束值,差值比例);
Mathf.Lerp //差值运算
float x=Mathf.Lerp(a,b,t);//x=a+(b-a)tMathf.Lerp(a,b,t)插值用算a为一个值,b为一个值,t为插值t<=0;输出a(最小值),t>=1输出b(最大值)常用于动画效果
Maths.Lerp(a,b,Time.deltaTimevalue)越来越慢的运动
26使用MoveTowards做匀速运动
LerpAngle 角度差值;
MoveTowards 匀速运动;
MoveTowards(当前值,目标值,移动间隔)
Mathf.MoveTowards(x,10,speed);//x向10匀速增加
MoveTowards(x,10,0.1f)做匀速运动,最大值不会超过10,速度为x+0.1f,可以考虑正负的情况
27使用PingPong方法实现乒乓的来回运动效果
new vector3 Math.Pingpong(time.time*speed,5)一直增大,在time初始值和5之间来回运动实现乒乓球来回的效果,匀速运动
PingPong 范围内来回循环;
PingPong(返回值,最大值)
Lerp:j减缓运动;
28Input类输入类(按键、按键、触摸相关检测)
Input 输入;
Input manage 输入轴;
accelerationEvent 感应重力;
GetTouch()屏幕触摸
Input.anyKeyDown();按下任何键都会触发,包括鼠标。
Input.mousePosition;鼠标在键盘上的实时坐标。
29Input里面的GetKeyXXX的使用
GetButton 获得按钮;
GetKey 判断键盘的按下或松开;
KeyCode.key 按键按钮
30鼠标按键事件的监测
Input.GetMouseButton(参数0,1,2);检测按下鼠标上的键,0代表左键,1代表右键,2代表中键;可以持续检测;
Input.GetMouseButtonDown(参数0,1,2);只检测一次;
31GetButtonXXX相关事件监测
getbutton(“虚拟按键名”);
虚拟按键可对应多个物理按键,如 fire1 ;
32使用GetAxis得到轴的值的变化来控制移动
Horizontal,横轴;Vertical,纵轴;
控制轴的移动也可以控制物体的运动,有渐变的效果;由0到1,或由0到-1;
使用GetAxis得到轴的值的变化来控制移动,模拟加速运动;
Input.GetAxis() //返回float值
GetAxisRaw 按下立刻运动,没有渐变效果;
33屏幕坐标系和鼠标的坐标
anyKeyDown:有任何键按下就返回true
mousePosition:f返回鼠标在屏幕的像素坐标
GetTouth 检测与触摸有关的操作,例如:几指触摸/手势anykeyDownAnykey:任何键
Input.anyKeyDown:检测鼠标或者键盘任何键的按下;Input.mousePosition:检测鼠标在屏幕上的位置,z轴恒为0;
34Vector2中的变量有哪些
变量:magnitude:取得向量的长度,获取向量;
normalized:对向量进行单位化,把坐标值都变为1;
x左右,y上下,z前后
sqrMagnitude:取得向量的长度的平方,没有开根号的向量.x2+y2
35向量是结构体
向量是结构体,是值类型,要整体赋值
(struct, position)transform.position=new Vector3(3,3,3);
Vector3 pos=transform.position;pos.x=10;transform.position=pos;