# Motion

[关于游戏中角色运动的一些实在问题（附代码）](https://mp.weixin.qq.com/s/5Jsp6yyB0wDoMGKxjgG_xg)

#### 控制角色移动

1. 使用物理系统
2. 使用加速度
3. 在 FixedUpdate 调用物理系统

#### 地面检测

判断角色是否脚踏实地

1. 在角色脚下射出碰撞方块
2. 判断接触点的法线

斜坡运动

1. 角色运动方向要与斜坡方向水平
2. 更进一步, 是要与下一帧斜坡方向水平

#### 平台优化

**土狼时间**

1. 角色离开平台后短暂时间还能跳跃
2. 离开平台后短暂保留平台状态

**边缘助力**

1. 角色要跳上时, 小部分撞到平台导致没撞上
2. 可以将边缘圆润的碰撞体替换原本角尖锐的碰撞体
3. 可以在快撞到平台时给予助力

**空中控制**

好的空中控制需要

1. 跳跃高度会随按下跳跃键的时间而变化，做到短按跳得矮，久按跳得高（有种通过按键来施加跳跃力的感觉）
2. 跳跃下落更干脆，对于同等高度，通常下降的时间会比跳跃上升的时间更短。

添加额外重力

1. 当玩家在跳跃上升过程中，如果没按住跳跃键，就施加更大重力
2. 当玩家处于下落状态时，我们就为它施加额外重力，使下落过程加快
