【Unity3D】角色控制器(CharacterController)
1.【Unity3D】Unity3D技术栈2.【Unity3D】常用快捷键3.【Unity3D】地形Terrain4.【Unity3D】MonoBehaviour的生命周期5.【Unity3D】Transform组件6.【Unity3D】刚体组件Rigidbody7.【Unity3D】人机交互Input8.【Unity3D】碰撞体组件Collider9.【Unity3D】发射(Raycast)物理射线(Ray)10.【Unity3D】GUI控件11.【Unity3D】相机跟随12.【Unity3D】UGUI概述13.【Unity3D】UGUI之Text14.【Unity3D】UGUI之Button15.【Unity3D】UGUI之Image和RawImage16.【Unity3D】UGUI之Dropdown17.【Unity3D】UGUI之Toggle18.【Unity3D】UGUI之Slider19.【Unity3D】UGUI之布局组件20.【Unity3D】UGUI之InputField21.【Unity3D】摇杆22.【Unity3D】UGUI回调函数23.【Unity3D】血条(HP)
24.【Unity3D】角色控制器(CharacterController)
25.【Unity3D】Tank大战26.【Unity3D】相机27.【Unity3D】场景切换、全屏_恢复切换、退出游戏、截屏28.【Unity3D】2D动画29.【Unity3D】人体模型及动画30.【Unity3D】人物跟随鼠标位置31.【Unity3D】AudioSource组件32.【Unity3D】动画回调函数、动画事件、动画曲线33.【Unity3D】动画混合34.【Unity3D】IK动画35.【Unity3D】灯光组件Light36.【Unity3D】导航系统37.【Unity3D】动态路障导航38.【Unity3D】分离路面导航39.【Unity3D】拖尾TrailRenderer40.【Unity3D】线段渲染器LineRenderer41.【Unity3D】粒子系统ParticleSystem42.【Unity3D】基于粒子系统实现烟花特效43.【Unity3D】VideoPlayer组件44.【Unity3D】协同程序45.【Unity3D】同步Socket通讯46.【Unity3D】异步Socket通讯47.【Unity3D】Photon环境搭建48.【Unity3D】缩放、平移、旋转场景49.【Unity3D】绘制物体表面三角形网格50.【Unity3D】使用GL绘制线段51.【Unity3D】点选物体、框选物体、绘制外边框52.【Unity3D】绘制物体外框线条盒子53.【Unity3D】基于AssetBundle实现资源热更新54.【Unity3D】魔方55.【Unity3D】立方体纹理(Cubemap)和天空盒子(Skybox)56.【Unity3D】Cesium加载大地图57.【Unity3D】UI Toolkit简介58.【Unity3D】UI Toolkit容器59.【Unity3D】UI Toolkit元素60.【Unity3D】UI Toolkit样式选择器61.【Unity3D】UI Toolkit自定义元素62.【Unity3D】UI Toolkit数据动态绑定63.【Unity3D】资源管理64.【Unity3D】Unity与Android交互1 简介
控制角色移动的组件主要有:Transform 组件、Rigidbody 组件、CharacterController 组件。Transform 组件通过控制角色位置实现移动,Rogidbody 组件通过控制角色速度实现移动,CharacterController 组件通过控制角色速度和模拟碰撞实现移动。Transform 组件和 Rogidbody 组件不便于控制角色爬坡和爬梯,CharacterController 组件能够很方便地实现角色在各种复杂地形中运动。
CharacterController 继承 Collider(见→碰撞体组件Collider),其属性面板如下:
- Slope Limit:爬坡最大角度
- Step Offset:爬梯最大高度
- Skin Width:皮肤厚度
- Min Move Distance:最小移动距离
- Center、Radius、Height:角色用于检测碰撞的胶囊体中心、半径、高
说明:CharacterController 继承 Collider,并且其碰撞体是一个胶囊体。
CharacterController 中控制角色移动的方法如下:
public CollisionFlags Move(Vector3 motion)
public bool SimpleMove(Vector3 speed)
2 应用
1)游戏对象
创建 2 个楼梯(每个楼梯由 5 个 Cube 对象拼成)和 2 个斜坡以及一个胶囊体,如下:
2)脚本组件
PlayerController.cs
using UnityEngine;
public class PlayerController : MonoBehaviour {
private CharacterController character;
private float speedRate = 4f;
private void Start () {
character = GetComponent<CharacterController>();
}
private void Update () {
float hor = Input.GetAxis("Horizontal");
float ver = Input.GetAxis("Vertical");
Vector3 speed = new Vector3(hor, 0, ver) * speedRate;
character.SimpleMove(speed);
}
}
说明: PlayerController 脚本组件挂在胶囊体上。
3)运行效果
声明:本文转自【Unity3D】角色控制器(CharacterController)
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 【.NET】调用本地 Deepseek 模型
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 我与微信审核的“相爱相杀”看个人小程序副业