目录
一. 角色控制
名称: | 功能: |
---|---|
坡度限制 | 将碰撞器限制为仅爬升比指示值更陡峭(以度为单位)的斜坡。 |
步长偏移 | 只有当楼梯离地面比指示值更近时,角色才会爬上楼梯。此值不应大于 Character Controller 的高度,否则将生成错误。 |
蒙皮宽度 | 两个碰撞体可以相互穿透,深度可达其 Skin Width (蒙皮宽度)。较大的 Skin Width 可减少抖动。低 Skin Width 会导致角色卡住。一个好的设置是将该值设为 Radius 的 10%。 |
最小移动距离 | 如果角色尝试移动到指示值以下,则它根本不会移动。这可用于减少抖动。在大多数情况下,此值应保留为 0。 |
中心 | 这将在世界空间中偏移胶囊碰撞体,并且不会影响角色的旋转方式。 |
半径 | 胶囊碰撞体半径的长度。这实际上是碰撞体的宽度。 |
高度 | 角色的胶囊碰撞器 高度。更改此设置将沿 Y 轴在正方向和负方向上缩放碰撞体。 |
Character Controller(角色控制器)
-
功能特点:
- 主要用于模拟角色的基本运动,如行走、跑步、跳跃等,而不依赖于物理引擎的刚体。
- 可以方便地控制角色与场景中的物体进行碰撞检测,避免角色穿透墙壁等物体。
- 提供了一些内置的属性和方法,用于设置角色的速度、重力、碰撞响应等。
-
主要属性:
- Slope Limit:限制角色可以攀爬的最大坡度。
- Step Offset:角色可以跨越的台阶高度。
- Skin Width:用于碰撞检测的皮肤宽度,以避免角色在与物体接近时出现抖动。
- Min Move Distance:如果角色的移动距离小于这个值,则不会进行移动,以避免微小的移动导致不必要的计算。
-
使用方法:
- 通过脚本获取 Character Controller 组件,并在 Update 函数中使用 Move 方法来实现角色的移动。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerMove : MonoBehaviour
{
public float speed;
private CharacterController controller;
// Start is called before the first frame update
void Start()
{
controller = GetComponent<CharacterController>();
}
// Update is called once per frame
void Update()
{
Vector3 moveDirection = new Vector3(Input.G