乐儿p
乐儿p
Lerp:三个参数a(起始值),b(结束值),t(a和b之间的比例,最大为1,直接返回b,最小为0,直接返回a)
关于游戏开发中的插值运算
Lerp(a,b,t):在a到b之间插入一个值,t用来控制插在哪个位置t的范围为0<=t<=1,当t<=0时,输出a,t>=1时,输出b
用来做动画效果,
特点为:先快后慢
public class MathfCS : MonoBehaviour {
public Transform cube;
// Use this for initialization
void Start () {
cube.position = new Vector3(0, 0, 0);
}
void Update()
{
float x = cube.position.x;
//只要开始运行,cube的初始位置就变为(1,0,0),然后按区间长度每次运动区间长度的1/10,由于区间长度越来越短,所以运动越来越慢
float newX = Mathf.Lerp(x, 10, 0.1f);//0.1f可以换成Time.deltaTime*speed
cube.position = new Vector3(newX, 0, 0);
}
}
LerpAngle:
mathf.lerp
插值运算,用来做动画效果
a,b, T
特点:先快后慢
Mathf.Lerp(a,b,t)在a和b之间t的位置插入数并返回这个数,t是一个比例
lerp(float a ,float b ,float t)
t0到1
当a=0 b =10
t=0 返回0
t=1返回10
t =0.5 返回5
游戏开发中的插值运算
Mathf.Lerp (flaot a,float b,flaot t)
a开始值,b结束值,t 0到1的一个比例,小于0按0算,大于1按1算。
越往后距离越慢,先快后慢,
Mathf.Lerp(float a,float b,float t)
a: 开始值;
b:结束值;
t: (0到1之间的比例)
t<=0:返回a; t>=1: 返回b;
特点:先快后慢;
按相同的比例进行插值
来控制物体运动到目标物体
速度会先快后慢
public static float Lerp(float a,float b,float t);
差值运算
Lerp(float a,float b,float t):a为最小值,b为最大值,t为两个值中间的比例,t=0.5函数返回两个值的中间值 通常用于动画(运动)效果使动画(运动)先快后慢
Mathf.Lerp //差值运算
float x=Mathf.Lerp(a,b,t);
//x=a+(b-a)*t
Mathf.Lerp 差值计算
Mathf.Lerp(a,b,t)插值用算
a为一个值,b为一个值,t为插值
t<=0;输出a(最小值),t>=1输出b(最大值)
常用于动画效果
Maths.Lerp(a,b,Time.deltaTime*value)
越来越慢的运动
Lerp (开始值,结束值,差值比例);
1.创建游戏物体f的三种方法
new GameObject();括号里可以添加想要创建的物体类型例如
new GameObject("Cube");创建出一个正方体
GameObject.Instantiate();
实例化Prefabs或实例化游戏物体
GameObject.CreatePrimitive();
创建原始图形如:.GameObject.CreatePrimitive(PrimitiveType.Cube);
2.通过代码给游戏物体添加组件
private GameObject object;
object.AddComponent<Rigidbody>();
通过代码给游戏物体j添加脚本
object.AddComponent<脚本名>();
3.GameObject游戏物体的常用类
GameObject.activeInHierarchy 物体是否处于激活状态(包括自身及子物体)
4.UnityEngine下Object的静态方法
Object.Destroy:
Destroy(gameobject,time);
Object.DontDestroyOnLoad:
DontDestroyOnLoad(transform.gameObject);(在进行场景之间转换时不会被销毁,会被带到下一个场景中)
Object.FindObjectOfType:
Object a =FindObjectOfType(typeof(组件名))
Rigidbody a=FindObjectOfType<Rigidbody>();
只返回第一个被检测到含有此组件的物体。不查找未激活的游戏物体
Object.FindObjectsOfType:
Object a =FindObjectsOfType(typeof(组件名))
Rigidbody a=FindObjectsOfType<Rigidbody>();
将检测到的所有的含有此组件的物体都存在数组中。不查找未激活的游戏物体
5.查找方法
Find(比较耗费性能)
FindGameObjectsWithTag返回所有是次标签的物体返回数组
FindWithTag只返回第一个检测到的物体。
6.游戏物体间消息的发送和接收
GameObject.BroadcastMessage();包括其自身及其子物体
GameObject.SendMessage(); 不包括子物体
GameObject.SendMessageUpwards();包括其自身及其父物体
7.得到组件的各种方法函数
GetComponent;只会得到在游戏物体身上的第一个检测到的组件
GetComponent;会得到物体上所有的组件
GetComponentInChildren;会得到其自身及其子物体身上第一个检测到的相应的组件
GetComponentInParent;会得到其自身及其父物体身上第一个检测到的相应的组件
GetComponentsInChildren;会得到其自身及其子物体身上所有检测到的相应的组件
GetComponentsInParent;会得到其自身及其父物体身上所有检测到的相应的组件
8.Public Functions
Invoke;
Public void Invoke(string methodName,float time );可延时调用方法
CancelInvoke;取消所有调用的方法(仅适用于当前脚本,不影响其他脚本中相同方法的调用)
InvokeRepeating;重复调用方法
IsInvoking;判断方法是否正在被调用
协程:
1.返回值是IEnumerator
2.返回参数时使用yield return null/0。
3协程方法的调用:使用StartCoroutine(需要调用的协程方法的名字);
4暂停yield return new WaitForSeconds(需要暂停的时间);
例如:
IEnumerator Method(){
内容;
yied return null;
}
StartCoroutine();开启协程
StopCoroutine();关闭协程
StopAllCoroutine();
9.与鼠标相关事件函数OnMouseXXX
OnMouseDown();当鼠标按下时触发
OnMouseUp();当鼠标抬起时触发
OnMouseDrag();当鼠标已经按下但没有抬起时触发
OnMouseEnter();当鼠标在游戏物体身上但没有按下鼠标时触发
ONMouseExit();当鼠标离开游戏物体时触发
OnMouseOver();当鼠标在游戏物体身上时无论是鼠标按下或没有按下只要鼠标在游戏物体身上就触发。
10.Mathf里面的方法
Mathf.PI 圆周率
Mathf.Deg2Rad 将度数转变为弧度
Mathf.Rad2Deg 将弧度转成度数
Mathf.Epsilon 无限小的数
Mathf.Infinity 无限大的数
Mathf.Abs 绝对值
Mathf.Ceil 向上取整
如Mathf.Ceil(10);结果为10.
Mathf.Ceil(10.2f);结果为11.
Mathf.Ceil(-10);结果为-10.
Mathf.Ceil(-10.2f);结果为-10.
Mathf.Floor();向下取整。
Mathf.Clamp(float value,float min,flaot max); valur为自己定义的数值。如果value小于min则将value改为min,如果value大于min且小于max则value为自身值,如果value大于max则将value改为max。
Mathf.ClosesPowerOfTwo(int value);取离value最近的2的多次方
如Mathf.ClosesPowerOfTwo(3);返回4
Mathf.ClosesPowerOfTwo(7);返回8
Mathf.DeltaAngle();返回角度之间的最小夹角。如721°-360°=361°,其返回1°。
Mathf.Exp(float power);代表e的power次方
Mathf.Max(float a,float b);比较两个数中的最大值(float可换为int)
Mathf.Max(float[] value);比较数组中的最大值(float可换为int)
Mathf.Min(float a,float b);比较两个数中的最小值(float可换为int)
Mathf.Min(float[] value)比较数组中的最小值(float可换为int
Mathf.Pow(float a,float b);a的b次方。
Mathf.Sqrt();开平方根。
Mathf.Lerp(float a,float b,float t);插值运算
t为a到b之间的距离的比率,如t=0.5时,返回值为(a+b)*0.5,t为0时,返回值为a,t为1时返回值为b;