U3D简单知识点

1、人机交互Input类

(1)常用外部设备
鼠标、键盘、手柄、摇杆、触屏、VR手柄、VR

(2)Input键盘输入方法
GetKey(按住)、GetKeyDown、GetKeyUp
eg: Input.GetKey(KeyCode.Space)返回布尔值

(3)Input鼠标输入方法
GetMouseDown、GetMouseUp
Input.GetMouseButton(0); ——鼠标左键0,鼠标右键1,滑轮2
mousePosition:左下角坐标为(0,0)

2、Input 虚拟轴/虚拟按键

(1)虚拟轴
触屏类:Mouse X 、Mouse Y、Mouse Scrollwheel
键盘操作类:Vertical、Horizontal

(2)获取方法
GetAxis([string])
GetAxis( )和GetAxisRaw( )的区别
Input.GetAxis(“Vertical”)有加速度
Input.GetAxis(“Vertical”):1.0 —>-1.0
Input.GetAxisRaw(“Vertical”):1.0 —>0 —>-1.0

(3)虚拟按键
GetButton、GetButtonUp、GetButtonDown

(4)调节面板
Edit->Project setting -> Input

3、移动方向

transform.forward:z轴
transform.up:y轴
transform.Translate(Vector3.righthmoveSpeed*Time.deltaTime,Space.World);(少用)
transform.position += new Vector3();

4、向量点乘

a · b =|a||b|cosθ
结果是一个标量
如果夹角范围0-180度,(<90°)大于0,(>90°)小于0
通常用来判断敌人在前还是在后

5、向量叉乘

a x b
结果是一个向量,法向量⊥ab向量所在平面
如果法向量向上,则b向量指向a向量的右边
通常用于判断敌人在左还是在右

6、欧拉角

物体绕xyz轴(世界坐标)选择的角度:EularAngle
欧拉角容易出现多个欧拉角的值表示一个旋转
四元数:避免万向锁的问题
将欧拉角转为四元数:Quaternion.Euler(new Vector3);

7、unity脚本的生命周期

(1)开始
Awake():唤醒函数,在游戏开始时执行一次,脚本组件不可用时,依旧执行
OnEnable():在脚本组件被设置为可用(勾选)时调用一次
Start():在OnEnable()后执行,整个游戏开始时,只执行一次

(2)持续
FixUpdate():每隔一定时间间隔执行一次(0.02s默认)
Update():每帧执行一次
LateUpdate():(先后顺序会用到),每帧执行一次
OnGUI():每帧调用两次,用于渲染UI(旧版的)

(3)收尾
OnDisable():当脚本组件被设置为不可用的时候,调用一次
OnDestroy():当脚本组件被销毁的时候

8、常用调试方法

(1)打印
Debug.Log():引用UnityEngine;
print:Monobehaviour的方法

(2)划线
DrawLine(Vector3 start, Vector3 end);
DrawRay(Vector3 start, Vector3 dir);

9、Monobehaviour

Monobehaviour继承关系:Mono->Behavior->Component->Object(和System.Object的不是一个)
Monobehaviour类:脚本组件一定要继承此类

10、常见类和结构体

(1)GameObject
GetComponent<>
GameObject.Find():通过name,不能找到非激活的对象,如果对象多,消耗性能(少用)
GameObject.FindWithTag():性能消耗小些
FindGameObjectsWithTag():找多个对象

(2)Transform
position、localPosition
eulerAngles、localEulerAngles:欧拉角
rotation、localRotation:四元数
RotateAround:绕某个点沿某个轴旋转(公转)
LookAt:看向某个对象

(3)Vector3
(4)Quaternion
identity:空旋转
LookRotation():向量转换成四元素
Lerp():插值

(5)Time
time:从游戏开始到此时,所花费的时间
deltaTime:从上一帧结束到当前帧开始,所花费的时间
fixedDeltaTime:固定时间间隔(默认0.02s)
timeScale:时间缩放(默认1s)

(6)Mathf
Abs:求绝对值
Lerp:插值
Clamp:限制值(防止数值溢出)
Clamp01(0.1f):范围写死在(0,1)之间

11、触发器和碰撞器、刚体

(1)Collider种类:Box、Sphere、Capsule、Mesh(少用)
(2)碰撞条件:两个物体需要有碰撞器,其中一方有刚体,最好是运动方有刚体(不运动就会休眠,不会发生碰撞检测)
(3)设置触发器:isTrigger
(4)刚体Rigidbody
AddForce(Vector3):添加一个力
AddTorque():添加力矩

12、物理射线Ray(用于检测碰撞体)

(1)射线组成部分:起点origin、方向direction
(2)获取鼠标屏幕射线:ScreenPointToRay
(3)射线检测方法
physics.RayCast(origin, direction)
physics.RayCast(Ray)
physics.RayCastAll( )

13、抖动问题

原因:电脑性能不同,运行的帧不同,刚体受力,每一帧受力不同,所以会抖动
解决方法:把有关移动的方法放到固定物理帧FixedUpdate( )函数,然后把时间Time.deltaTime改为Time.fixedDeltaTime,每秒固定。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值