ProjectSetting /InputManager
当主要键都去掉,就会使用备用键,或者当时也可以使用,修改这四个键。
当时可能是方法使用错了,应该使用Input.GetButton("XXX");
GetAxis("Horizontal");返回float 值
cube.Translate(Vecotr3.right*TIme.deltaTime*Iinput.GetAxis("Horizontal"));
ProjectSetting /InputManager
当主要键都去掉,就会使用备用键,或者当时也可以使用,修改这四个键。
当时可能是方法使用错了,应该使用Input.GetButton("XXX");
GetAxis("Horizontal");返回float 值
cube.Translate(Vecotr3.right*TIme.deltaTime*Iinput.GetAxis("Horizontal"));
GetButtonXXX 与PrijectSetting/Input来配合使用。
GetButtonDown
GetButtonUp
GetButton
虚拟按键, inputManager里的都是
Negative Button
Positive Button
Alt NegativeButton
Alt PositiveButton 备用
if(Input.GetButtonDown("Fire1"))
上面四个按钮设置一个都可以使用,
轴。有两个按键,意思是使用上面两种,
当主要的按键都设置了,会以设置的为主,没有的话就会使用备用的。
小键盘,上下左右,就是,up down left right
和w s a d齐名。
鼠标事件检测。
按键有对应名字
Input.GetMouseButton()0左键,1,右键,2中键
GetMouseButtonDown
GetMouseButtonUp
Input GetKey 键盘上按键
GetkeyDown(KeyCode.XXX)
GetKeyUp
GetKey
Input输入类 键盘操作有关系
全都是静态的东西,
acceleration 陀螺仪,重力感应,
imeIsSelect, 输入法。
使用PingPong方法来实现来回运动
Mathf.PingPong(flaot t,flaot length)
最大值是length,最小值默认是0,不能更改
t就是使用时间,也代表当前位置,速度。
Mathf.PingPong(0,5);到5之后又往小了变,到了0之后又变大到5.
cube.position = new Vector3(Mathf.pingPong(Time.time*speed,10))
使用这个就要保证t自身是不断增大的。然后才能使得pingpong函数体现。
lerp两点之间,先快后慢,自己定义两个点
Movetowards,匀速运动,自己定义两个点
PingPong,两个点来回运动,最小点0位置默认,t代表当前位置,length代表长度,到达长度就向相反方向移动。
MoveTowards 做匀速运动
Mathf.LerpAngle ,保证插值。
Mathf.MoveTowards(当前值,目标值,间隔);
匀速运动,
间隔改成负数就会远离目标。乘以Time.deltaTime.1秒1米。
保证不会超过目标值。
游戏开发中的插值运算
Mathf.Lerp (flaot a,float b,flaot t)
a开始值,b结束值,t 0到1的一个比例,小于0按0算,大于1按1算。
越往后距离越慢,先快后慢,
Mathf中常用的方法
Mathf.ColsestPowerOfTwo(10)返回最接近的 2 的幂值(2的平方值)
Marhf.deltaAngle(1080,90) 计算两个角度之间的最小夹角。
Mathf.Floor(10.7);向下取整, FloorToInt,返回int类型
mathf.Exp(n) 代表e的n次方。
public static float Lerp (float a, float b, float t);
在 a
与 b
之间按 t
进行线性插值。
参数 t
限制在范围 [0, 1] 内。
当 t
= 0 时,返回 t
。\ 当 t
= 1 时,返回 t
。\ 当 t
= 0.5 时,返回 a
和 b
的中点。
public static float LerpAngle (float a, float b, float t);
与 Lerp 相同,但是在值环绕 360 度时确保值正确插入。
参数 t
限制在范围 [0, 1] 内。假设变量 a
和 b
以度为单位。
public static float LerpUnclamped (float a, float b, float t);
t不受限制。想是多少是多少。
Mathf.Max(1,2)取得最大值。可以是两个数,可以是数组里的。
Mathf.Min(1,2)取得最小值,范围和max一样
Mathf.MoveToWards(float current, float target, float maxDelta) 用来做移动。将值 current
向 target
靠近。这本质上与 Mathf.Lerp 相同,
Mathf.Pow(float f,flaot p) 取得f的p次方
Mathf.Sqrt() 求平方根
Mathf 数学方法
变量和方法全都是静态的。
PI,圆周率
Mathf.Deg2Rad 角度变成弧度
Mathf.Rad2deg 弧度转成角度
Mathf.Epsilon 非常小的小数,比0大,无限小
Mathf.INfinity 无限大的数字,
Mathf.NegativeInfinity 无线小的shu'zi
OnMouseDown 鼠标按下
OnMouseDrag 鼠标拖动
OnMouseUp 鼠标抬起
OnMouseEnter 鼠标刚放在物体上
OnMouseOver 鼠标一直放在物体上
OnMouseExit 鼠标离开物体
物体必须有collider。不一定。标记为trigger。
还有ProjectSetting/Physics/Queries hit Triggers 勾选上。(如果标记未trigger)
OnMouseUpAsButton 抬起的时候触发,条件是按下和抬起时都是同一个物体。如果按下时在一个物体,抬起时不在,就会失效。用来处理单击。
协程开启和关闭
StartCoroutine
StopCoroutine.暂停不住。
StopAllCoroutine
开启的时候使用方法名,关闭的时候就要使用方法名,
开启的时候使用方法名(),关闭的时候也一样。
成对。
方法1.定义一个ie,接受一下协程方法。
开的时候StartCoroutine(ie);可以传多个参数
关的时候StopCoroutine(ie);
方法2.
StartCoroutine("Function");只能传一个参数
StopCoroutine("Function");
协程。实现一个颜色渐变效果。
yield return new WaitforSeconds(3f);
for(float i = 0;i<=1;i+=0.1f)
{
cube.getComponent<MeshRender>().material.color = new Color(i,i,i,i);
yield return new WaitForSecond(0.1f);
参数正常是1.
}
Color newColor = Color.Lerp(当前color,目标color,0.02f)
yield return new WaitForSeconds(0.02f);
Mathf.Abs()绝对值。
协程,
普通方法调用从上到下。
1.一起执行,不会等。同步执行,
2.可以暂停,
IEnumerator changeColor()
{
yield return null;
}
StartCoroutine("方法名");
StartCoroutine(changecolor());
Invoke("FunctionName",time);
cancelInvoke (可以指定特定方法,不指定就是当前脚本全部);
invokeRepeating("FunctionName",firsttime,nexttime);
bool result = isInvoking ("FunctionName");
有例子,在Scripting API里面
print 静态的。MonoBehaviour
查看组件是否激活,isActiveAndEnabled
设置 enabled = T/F
tag
gameobject
transform
name
当前表示this.
开两个inspecotr 进行赋值cao'zuo
monobehaviour 总览
间接继承自component。
runinEditMode,在编辑器模式下运行,
【ExecuteInEditMode】加特性,某个类或者方法前加上,在编辑器下也会运行。
useGUILayout
Invoke 调用方法。
InvokeRepeating
CancelInvoke()取消,取消在当前脚本的Invoke。
协程, 有例子。
StartCoroutine
StopCoroutine
StopAllCoroutine
组件是否激活,isActiveAndEnable
得到组件的方法函数
target .GetComponent<>();
target.GetComponents<>();
GetCompontnetInChildren
GetComponentSInChildren游戏物体自身以及孩子们
GetComponentInParent
GetComponintsInParent<>所有父亲身上的指定组件
游戏物体之间消息发送。
对象方法
SetActive
Message.
SendMessage,
BroadCastMessage("方法名");调用方法。所有方法名这个,所有物体都进行使用。降低耦合性。互相调来调去。需要有接受者。
作用范围:当前物体以及所有孩子
target. BroadCastMessage("方法名",null,SendMessageOptions.DontRequireReceiver);规定后面是否必须要接受者。
接受的话需要状态处于激活。
target.SendMessage(“方法名”);不会去调用孩子。
只调用当前物体上的方法。
只针对某一物体上所有物体有这个方法就会调用。
target. BroadCastMessageUpWord 作用范围:当前物体以及所有父类。
Component,
GameObject独有的静态方法
activeInHierarchy
activeself
layer
tag
静态查找
GameObject.Find("名字"); 遍历耗费性能。
GameObject.FindGameObjectWithTag("tag");效率高。
GameObject.FindGameObjectsWithTag("tag");