【Unity 游戏开发】角色控制模块技术要点拆解
文章目录
- 1️⃣ 基础概念
- ✅ 坐标系
- ✅四大坐标系分类与特性
- ✅ 按键检测
- **按键状态检测函数**
- `Input.GetKey(KeyCode key)`
- `Input.GetKeyDown(KeyCode key)`
- `Input.GetKeyUp(KeyCode key)`
- **轴输入检测函数**
- `Input.GetAxis(string axisName)`
- `Input.GetAxisRaw(string axisName)`
- **鼠标输入检测函数**
- **触摸输入检测(移动端)**
- 2️⃣ 角色移动实现
- ✅ 创建Scene
- ✅ 平滑处理
- ✅ 编码控制Player
1️⃣ 基础概念
围绕Unity跨平台特性与控制器适配展开基础场景搭建
✅ 坐标系
Unity 采用 右手坐标系(Right-Handed Coordinate System),默认轴向定义为:
- X 轴:向右(Right)
- Y 轴:向上(Up)
- Z 轴:向前(Forward,指向屏幕外侧)
坐标系是所有物体位置、旋转、缩放的基础,理解其特性是实现精准场景搭建与物体控制的关键。
但是本例子中,我们以跑步类游戏为原型,以
x
正值为前进方向,z
轴正方形为左,如下图:
✅四大坐标系分类与特性
- 世界坐标系(World Coordinate System)
全局绝对坐标,以场景原点(0,0,0)为中心
轴向:X(右)、Y(上)、Z(前)
应用场景
- 物体在场景中的绝对位置(
Transform.position
)摄像机视角计算(如
Camera.main.transform.position
)
- 物理系统碰撞检测(刚体位置基于世界坐标)
// 获取物体世界坐标 Vector3 worldPos = transform.position; // 设置物体沿世界 Z 轴移动 transform.Translate(Vector3.forward * speed * Time.deltaTime);
- 局部坐标系(Local/Parent Coordinate System)
相对于父物体的相对坐标,原点为物体自身枢轴点(Pivot)
轴向:随父物体旋转而变化,
Transform.localPosition
表示相对于父物体的位置应用场景
- 子物体相对于父物体的位置调整(如角色手臂相对于身体的摆动)
物体自身方向移动(
Transform.forward
表示物体局部向前方向)示例
// 获取物体相对于父物体的位置 Vector3 localPos = transform.localPosition; // 沿物体自身前方移动(不考虑世界坐标系方向) transform.Translate(Vector3.forward * speed * Time.deltaTime, Space.Self);
- 屏幕坐标系(Screen Coordinate System)
以屏幕像素为单位的 2D 坐标,原点位于屏幕左下角
轴向
- X:向右(范围:0 ~ 屏幕宽度)
Y:向上(范围:0 ~ 屏幕高度)
- Z:摄像机到屏幕的距离