- 用户指南
- Components
- 寻路
- 动画组件
- 资源组件
- 音频组件(AudioComponent)
- 音频侦听器(AudioListener)
- 音频源(AudioSource)
- 音频过滤器(AudioFilter)(仅限专业版)
- 混响区域(ReverbZone)
- 麦克风(Microphone)
- 物理组件(PhysicsComponent)
- 箱体碰撞体(BoxCollider)
- 胶囊碰撞体(CapsuleCollider)
- 角色控制器(CharacterController)
- 角色关节(CharacterJoint)
- 可配置关节(ConfigurableJoint)
- 恒定力(ConstantForce)
- 固定关节(FixedJoint)
- 铰链关节(HingeJoint)
- 网格碰撞体(MeshCollider)
- 物理材质(PhysicsMaterial)
- 刚体(Rigidbody)
- (SphereCollider)
- 弹簧关节(SpringJoint)
- 交互布(InteractiveCloth)
- 蒙皮布(SkinnedCloth)
- 车轮碰撞体(WheelCollider)
- 游戏对象(GameObject)
- 图像效果(ImageEffectScripts)
- 高光溢出和镜头光晕(BloomandLensFlare)
- 模糊(Blur)
- 相机运动模糊(MotionBlur)
- 颜色修正曲线(ColorCorrectionCurve)
- 颜色修正(ColorCorrection)
- 颜色修正查找纹理(ColorCorrectionLookupTexture)
- 对比度增强(ContrastEnhance)
- 对比度拉伸(ContrastStretch)
- 起皱(Crease)
- 视野深度(DepthofField)3.4
- 视野深度(DepthofField)
- 边缘检测(EdgeDetection)
- 鱼眼(Fisheye)
- 全局雾(GlobalFog)
- 发光(Glow)
- 灰度(Grayscale)
- 运动模糊(MotionBlur)
- 噪波和颗粒(NoiseAndGrain)
- 噪波(Noise)
- 屏幕叠加(ScreenOverlay)
- 棕褐色调(SepiaTone)
- 边缘检测效应
- 阳光照射(SunShaft)
- 屏幕空间环境光遮蔽(SSAO)(ScreenSpaceAmbientOcclusion(SSAO))
- 倾斜位移(TiltShift)
- 色调映射(Tonemapping)
- 旋转(Twirl)
- 渐晕(Vignetting)(和色差(ChromaticAberration))
- 状态同步详细信息
- 旋涡
- 设置管理器(SettingsManager)
- 网格组件(MeshComponents)
- 网络组
- 效果
- 渲染组件
- 变换组件(TransformComponent)
- UnityGUI组
- 向导
- 地形引擎指南(TerrainEngineGuide)
- 树木创建器指南
- 动画视图指南
- GUI脚本指南
- 网络参考指南
- 移动设备上的网络连接
- 高级网络概念
- Unity中的网络元素
- RPC详细信息
- NetworkLevelLoading
- 主服务器
- 最小化网络带宽
- 社交API
- 内置着色器指南
- Unity的后台渲染
- 着色器参考
- ShaderLab语法:Shader
- ShaderLab语法:Properties
- ShaderLab语法:子着色器(SubShader)
- ShaderLab语法:Pass
- ShaderLabsyntax:Color,Material,Lighting
- ShaderLab语法:剔除和深度测试(Culling&DepthTesting)
- ShaderLab语法:纹理组合器(TextureCombiners)
- ShaderLab语法:雾(Fog)
- ShaderLab语法:Alpha测试(Alphatesting)
- ShaderLab语法:混合(Blending)
- ShaderLab语法:通道标记(PassTags)
- ShaderLab语法:名称(Name)
- ShaderLab语法:绑定通道(BindChannels)
- ShaderLab语法:使用通道(UsePass)
- ShaderLab语法:GrabPass
- ShaderLab语法:子着色器标记(SubShaderTags)
- ShaderLab语法:回退(Fallback)
- ShaderLab语法:自定义编辑器(CustomEditor)
- ShaderLab语法:其他命令
- ShaderLab语法:Pass
- 高级ShaderLab主题
- ShaderLab内置值
- 其他
- 网络视图
- 导航网格 (Navmesh) 和寻路 (Pathfinding)(仅限专业版 (Pro))
- Mecanim 动画系统
- 动画状态机
- 混合树 (Blend Tree)
- 在 Mecanim 中使用动画曲线 (Animation Curves)(仅限专业版 (Pro))
- 循环动画片段
- Animation State Machine Preview (solo and mute)
- 动画参数
- 旧动画系统
- 使用类人动画
- 动画层
- 资源导入与创建
- 音轨模块
- 减少文件大小
- 光照贴图 UV
- 资源准备和导入
- 如何安装或升级标准资源 (Standard Assets)?
- FBX 导出指南
- 从 Maya 中导入对象
- 从 Cinema 4D 中导入对象
- 从 3D Studio Max 中导入对象
- 从 Cheetah3D 中导入对象
- 从 Modo 中导入对象
- 从 Lightwave 中导入对象
- 从 Blender 中导入对象
- 为优化性能建模角色
- 如何使用法线贴图 (NormalMaps)?
- 如何修正已导入模型的旋转?
- 程序材质
- 如何使用水?
- 分析器(仅限专业版)
- 绘制调用批处理
- 遮挡剔除(仅限专业版)
- Unity 中的高动态范围 (High Dynamic Range) 渲染
- 在 Unity 4 中使用 DirectX 11
- 文本场景文件格式(仅限专业版)
- 使用网络播放器模版
- 平台依赖编译
- 日志文件
- 首选项
- 粒子系统曲线编辑器
- 渐变编辑器
- 怎样制作网格粒子发射器?(旧粒子系统)
- 深入了解光照贴图
- 光照贴图快速入门
- 着色器
- 动画脚本(旧版)
- 自定义
- 布局模式
- 扩展编辑器
- 网络实例化
- 材质和着色器
- 如何使用细节纹理?
- 着色器:顶点和片段程序
- Unity 中的阴影
角色控制器(CharacterController)
角色控制器 (Character Controller) 主要用于不使用刚体 (Rigidbody) 物理的第三人称或第一人称玩家控制。
角色控制器 (Character Controller)
属性
属性: | 功能: |
---|---|
高度 (Height) | 角色的胶囊碰撞体 (Capsule Collider) 高度。更改此项会同时在正方向和负方向上沿 Y 轴缩放碰撞体 (Collider)。 |
半径 (Radius) | 胶囊碰撞体 (Capsule Collider) 半径长度。这本质上是碰撞体 (Collider) 宽度。 |
斜坡限制 (Slope Limit) | 将碰撞体 (Collider) 限制为仅爬上等于或小于指示值的斜坡。 |
台阶偏移 (Step Offset) | 仅当阶梯比指示值更接近地面时,角色才会走上阶梯。 |
最小移动距离 (Min Move Distance) | 如果角色尝试移动的距离小于指示值,则它完全不移动。这可以用于减少抖动。在大多数情况下,此值应保留为 0。 |
皮肤宽度 (Skin width) | 两个碰撞体 (Collider) 可以互相穿透的深度为其“皮肤宽度”(Skin Width)。较大“皮肤宽度”(Skin Width) 可减少抖动。较小“皮肤宽度”(Skin Width) 可能导致角色卡住。良好设置是使此值为“半径”(Radius) 的 10%。 |
中心 (Center) | 这会使胶囊碰撞体 (Capsule Collider) 在世界坐标空间中偏移,不会影响角色旋转方式。 |
详细信息
传统 Doom 样式第一人称控制在物理上不现实。角色每小时奔跑 90 英里,立即停止并在极小空间中转弯。因为它如此不现实,所以使用刚体 (Rigidbody) 和物理创建此行为不切实际且感觉不正常。解决方案是专业的角色控制器 (Character Controller)。它仅仅是从脚本获知在某个方向上移动的胶囊形碰撞体 (Collider) 。该控制器随后执行移动,但是受碰撞约束。它会沿墙滑动、走上阶梯(如果低于台阶偏移 (Step Offset) )并走上处于坡限制 (Slope Limit)内的斜坡。
该控制器自己不对力作出反应,不会自动推走刚体 (Rigidbody)。
如果要使用角色控制器 (Character Controller) 推动刚体 (Rigidbody) 或对象,则可以使用脚本通过OnControllerColliderHit() 函数对任何与之碰撞的对象应用力。
另一方面,如果希望玩家角色受物理影响,则使用刚体 (Rigidbody) 会比角色控制器 (Character Controller) 更好。
微调角色
可以修改高度 (Height) 和半径 (Radius) 以适合角色的网格。建议始终将大约 2 米用于类人角色。如果旋转点未处于角色的准确中心处,则还可以修改胶囊的中心 (Center)。 of the capsule in case your pivot point is not at the exact center of the Character.
台阶偏移 (Step Offset) 也可以影响这一点,请确保此值对于 2 米大小人体介于 0.1 与 0.4 之间。
斜坡限制 (Slope Limit) 不应太小。通常最适合使用 90 度的值。角色控制器 (Character Controller) 将由于胶囊形状而无法爬上墙。
不卡住
皮肤宽度 (Skin Width) 是在调整角色控制器 (Character Controller) 时要正确设置的最关键属性之一。如果角色卡住,则很可能是因为皮肤宽度 (Skin Width) 太小。皮肤宽度 (Skin Width) 会使对象稍微穿透控制器,但是可消除抖动并防止其卡住。.
将皮肤宽度 (Skin Width) 保持为至少大于 0.01 且大于半径 (Radius) 的 10% 是个好做法。
建议将最小移动距离 (Min Move Distance) 保持为 0。
请参阅此处的角色控制器 (Character Controller) 脚本参考
可以从我们网站的资源区域下载演示预设动画且移动的角色控制器 (Character Controller) 的示例工程。
提示
- 如果发现角色经常卡住,请尝试调整皮肤宽度 (Skin Width) 。
- 如果编写自己的脚本,则角色控制器 (Character Controller) 可以使用物理影响对象。
- 对象不能通过物理影响角色控制器 (Character Controller)。
- 请注意,在检视器 (Inspector) 中更改角色控制器 (Character Controller) 属性会在场景中重新创建控制器,因此任何现有触发器 (Trigger) 接触都会丢失,在控制器再次移动之前将不会收到任何 OnTriggerEntered 消息。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论