unity3d 零散记录
(1) float smooth = ...
transform.position = Vector3.Lerp(transform.position, standarPos.position, Time.deltaTime * smooth);
//lerp 线性插值(from,to,t) t在0,1之间, 0.5代表from - to距离的一半
// Time.deltaTime * smooth , 最后一帧的时间 * smooth 每一次步进from-to的 Time.deltaTime * smooth 每一次调用移动几分之一距离,直到到达目的地 ,实现平滑过度
(2) void Update()基于机器渲染一帧时间;
void FixedUpdate()基于固定时间,可于菜单栏edit / Project Settings / time 修改。所以控制物理运动的相关函数应该在此执行
(3)animator.getfloat("ColliderHeight"); ColliderHeight 为motion(AnimationClip)中的curves曲线名称,只要在animator中添加此parameter,且名字对应便可以直接获取
(4)animator.isInTransition(0); 0 代表第几层,此函数判断是否正在动画转换中
(5)Ray ray = new Ray(transform.position + Vector3.up, -Vector3.up); //一条射线,从transform的上方一米处往 正下方射
RaycastHit hitInfo = new RaycastHit();//回调信息
if(Physics.Raycast(ray, out hitInfo)){//发出一条射线
if(hitInfo.distance > 1.75f){//如果transform离射线射到的物体的距离大于1.75
// matchtarget(要到达的点,要到达时的角度,自身avatar哪个部位,weightmask(xyz,rotation),开始时间normalized,结束时间normalized);
//MatchTargetWeightMask(xyz,rotation); 0代表目标权重最低,1最高,既目标的xyz对应值覆盖本身动画结束时的xyz对应值.
_anim.MatchTarget(hitInfo.point,Quaternion.identity,AvatarTarget.Root,new MatchTargetWeightMask(new Vector3(0,1,0),0),0.3f,0.6f);
}
}
(6) 在右侧inspector中,右键组件选择复制,在另一物体上随意组件上右键paste as new 。
inspector右上角选择inspector显示方式:Debug,normal,lock. Debug易于调试,lock锁定。
(7)在scene中,点击物体,按f键,使其于视图焦点。 按住鼠标右键进入第三人称模式,按shift加速,wsad键前后左右,qe上下。
Alt +鼠标左键 旋转世界坐标轴,alt+鼠标右键放大缩小视野。
移动物体时,按住ctrl键,按Edit/Project Setting/ snap设定的值移动物体。ctrl + shift键在其他物体上移动,v键在其他顶点上移动。
(8)要在0-2之间曲线变化,可用Mathf.sin(Time.time)+1
(9)模拟npc事件随机数 swith(state) public 自定义权重 ,, Random.value * total ,
function choose(int i ){ for(i.,.,.) {t<[i] return i; t>[i] t-=[i]. } return Length; }
(10)22【英宝通Unity4.0公开课】第二十二讲 Unity脚本使用:物体间通信方式 c#delegate event 简易
(11)Time.time%2 < 1 每隔一秒 即对2取余, 数在0 - 2之间,1为中间值
(12)void OnGUI(){ // Event只有在OnGUI()中发生
Event e = Event.current; //获取当前事件
if(e.isMouse && e.clickCount ==2 ){//如果是鼠标事件,且是双击事件
Debug.Log("Double Click");
}
}