Unity更多API
常用函数
线性插值Mathf.Lerp
用法Mathf.Lerp(float from, float to, float rate);
返回值 = from + (to - from) * rate
例如有代码
private float rate = 0.1f;
private float step = 0.1f;
void FixedUpdate()
{
if (rate <= 1)
{
Debug.Log(Mathf.Lerp(1, 10, rate));
rate += step;
}
}
其输入形似:
1.9
2.8
3.7
4.6
5.5
6.4
7.3
8.20001
9.1
在实际使用中可以起缓动作用。另外,Vector3、Vector2等类也有相似类型的函数,如Vector3.Lerp(Vector3 from, Vector3 to, float rate);
更多Api
时间Time
Time.time 从游戏开始的时间,受时间缩放影响
Time.timeScale 时间缩放值
Time.unscaledTime 不受时间缩放影响的时间
Time.deltaTime 渲染一帧的时间,受硬件影响,每一次渲染都可能不同,受时间缩放影响
Time.unscaledTime 不受时间缩放影响
因为每次Update执行的时间间隔都可能不同,所以一般固定时长的操作在FixedUpdate中进行
Time.realtimeSinceStartup 项目从启动到现在的时间
预制件Prefab
可以在Assets中右键,选择Create目录中的Prefab选项创建空白的预制件,或者将Hierarchy中游戏对象直接拖动到Assets中可以根据游戏对象创建预制件。
通过使用预制件可以快速复用游戏对象,提升开发效率。
需要注意的是,修改单个预制件的实例不会影响其他实例,如果要修改所有实例可以通过以下两种方法:
-
从Assets中进入预制件修改界面,会同时修改所有用到预制件的地方。
-
修改实例,然后选择覆盖预制件

输入Input
Input.GetMouseButton 鼠标按住
Input.GetMouseButtonUp 鼠标按下瞬间
Input.GetMouseButtonDown 鼠标按下瞬间
Input.GetKeyDown 监听按下某一按键
应用示例:
void Update()
{
if (Input.GetMouseButton(0)) // 按住鼠标左键
{
transform.Translate(0F, 0.1F, 0F);
}
if (Input.GetMouseButton(1)) // 按住鼠标右键
{
transform.Translate(0F, -0.1F, 0F);
}
if (Input.GetMouseButtonUp(0)) // 松开鼠标左键瞬间
{
transform.Translate(-0.1F, 0F, 0F);
}
if (Input.GetMouseButtonDown(1)) // 按下鼠标右键瞬间
{
transform.Translate(0.1F, 0F, 0F);
}
if (Input.GetKeyDown(KeyCode.Space)) // 按下空格键瞬间
{
transform.Rotate(0.5F, 0.5F, 0.5F, Space.World);
}
}
按住鼠标左键时:物体向上移动
按住鼠标右键时:物体向下移动
松开鼠标左键瞬间:物体向左移动
按下鼠标右键瞬间:物体向右移动
按下空格瞬间:物体轻微旋转(多按几次会比较明显)
视锥体
场景中的摄像机Camara中表示视野范围
在Unity中,摄像机的视野方位是一个锥台,其范围受以下因素影响
-
近裁剪平面 Clipping Planes -> Near 视锥体靠近摄像机的面,可以视为锥台的上表面
-
远裁剪平面 Clipping Planes -> Far 视锥体原理摄像机的面,可以视为锥台的下表面
-
视野距离 Field of View 两个面之间的距离,即锥台的高
虚拟轴
可以改动的按钮
可以在Edit -> Project Setting -> Input Manager -> Axes中管理
[[InputManagerAxesHorizontal截图]]
主要属性
Name: 虚拟轴名称
Negative Button: 负按键,此处为键盘左方向键
Positive Button: 正按键,此处为键盘右方向键
Alt Negative Button: 替代负按键,效果等同于负按键,此处为a键
Alt Positive Button: 替代正按键,效果等同于正按键,此处为b键
Gravity:从1恢复回0的速度,越大越快
Dead: 过度的精细度
Sensitivity: 从0到1的速度,越大越快
Invert: 翻转,勾选时交换负按键和正按键的作用
Type: 虚拟轴类型,此处为按键
Axis: 轴
Joy Num: 手柄编号
获取虚拟轴的函数
Input.GetAxis(虚拟轴名称)
正负按键同时按下时,返回0。按下Negative Button或Alt Negative Button时返回负值,按下Positive Button或Alt Positive Button时返回正值。
例如Input.GetAxis("Horizontal")
有顺序的按下时,返回先按下的。按下Negative Button或Alt Negative Button时返回负值,按下Positive Button或Alt Positive Button时返回正值。
Input.GetAxisRaw(虚拟轴名称)
只要都按下了,就返回0
例如Input.GetAxisRaw("Horizontal")
物理引擎
刚体组件RigidBody
添加刚体组件:选中游戏对象 -> 打开Inspector -> 页面底部选择Add Component -> Phisics -> RigifBody即可添加刚体组件

主要属性
Mass 物体质量
Drag 物体移动时收到的空气阻力
Angular Drag 物体转动时收到的空气阻力
Use Gravity 使用重力,勾选时物体受重力影响
Is Kinematic 勾选时物体不在受物理引擎控制
Interpolate 插值,用于缓解刚体运动时的抖动,包括以下三个取值
1. None
2. Interpolate 内插值,根据上一帧变化来平滑本帧变化
3. Extrapolate 外插值,预估下一帧变化来平滑本帧变化
Collision Detection 碰撞检测,取值如下
1. Discrete 离散碰撞检测,适用于普通

本文详细介绍了Unity中的常用API,如线性插值 Mathf.Lerp 的应用、Unity时间管理(Time类)、预制件Prefab的使用、Input输入管理以及物理引擎中的刚体组件。涉及了摄像机控制和碰撞检测等内容,帮助开发者提升游戏开发效率和体验。
最低0.47元/天 解锁文章
7755

被折叠的 条评论
为什么被折叠?



