Unity学习笔记(一)

1、layermask的作用

通过LayerMask.GetMask(“LayerName”),可以获得对应层的掩码(mask)。这样可以使得,如用摄像机投影射线时,求出其投影到指定层后的碰撞点。即可以指定碰撞器

 

2、Time.deltaTime的作用

官方解释是:你加上或者减去一个值,那你很可能应该乘以Time.deltaTime。当你乘以它以后,你实质上的表达是:我想让这个物体以每秒钟10米的速度移动而不是每帧10米。意思就是,Unity的帧率不一定相同,如果不乘deltaTime,则可能如:角色在某些场景或者某些主机中移动过快,有些又过慢。乘以这个数值后,每秒的移动速度就固定了。

 

3、GetAxis与GetAxisRaw的区别

在读取移动指令时,需要用GetAxisRaw,这样返回的值只有-1,0,1,如果用GetAxit,返回的是一个[-1,1]的区间,会造成人物移动时出现漂移的现象。

 

4、取得摄像头视线的焦点

Physics.Raycast (camRay, out floorHit, camRayLength, floorMask)

camRay是通过Camera.main.ScreenPointToRay(Input.mousePosition)计算鼠标落点和摄像机位置,得到的一条线段。

该线段长度为camRayLength,函数计算的是该线段与floorMask代表的层的交点,交点保存在floorHit里面

如果两者没有相交,则函数返回false,否则为true

 

5、计算旋转量用Quaternion的相关函数

Quaternion.LookRotation(Vector3 forward, Vector3 upwards = Vector3.up)

建立一个旋转,使z轴朝向forward y轴朝向upwards(默认upwards为Vector3.up)

 

6、使用Animator Controller时,动画不切换

记得在状态转移的属性里,把Has Exit Time这个框取消掉。选中了 Has Exit Time,如果上一个动画的播放时间有10s,选中了Has Exit Time在切换动画时,会等上一个动画播放完后才会播放下一个动画。

 

7、正交(Orthographic)摄像机

可以把摄像机设置为正交。正交摄像机与 Unity 3D 中普通摄像机相比没有透视效果(近大远小)

 

8、物体移动方式

如果有rigidbody组件,可以用MovePosition函数来移动。

如果是类似于摄像头这种,可以直接设定其transform.position来移动。

一般使用transform.position = Vector3.Lerp(A, B, fSmooth * Time.deltaTime)从A平滑地移动到B

这个函数返回一个位置,位于AB之间,第三个参数越大,离B点越近。

如果完全不需要考虑物理上的同步、移动平滑等,则直接用transform.Translate 即可。

 

9、canvas的效果

canvas的所有子对象都是不可交互的,因此如果将血条用slider对象表示并放在canvas下,那么即使不取消interactable选项用户也无法交互。

 

10、关闭组件与对象

使一个对象失效:.setActive = false

使一个组件失效:.enabled = false

 

11、collider与rigidbody

collider负责检测碰撞,rigidbody负责使物体能收到各种物理力量的作用

一般player需要设置rigidbody与collider两个属性,墙壁则只需要collider,用来检测是否和player或者敌人碰撞。

你可能感兴趣的:(游戏开发)