前言

角色控制器是unity内置的一个人物控制脚本。适用于第一、第三人称中控制人物的一个组件,刚体的计算量比较大, 所以出现了CharacterController来代替刚体,做具体的人物控制

常用属性介绍

  1. Slop Limit : 坡度的限制,限制角色可以爬坡的最大角度
  2. Step Offset : 高度限制,上楼梯时一步的最大高度
  3. Skin Width : 皮肤厚度
  4. Min Move Distance : 最小移动距离
  5. Center : 角色控制中心
  6. Radius : 角色控制器的半径
  7. Height : 角色控制器的高度

这些值一般由策划设置

例子一

pc电脑上通过点击来使人物移动

using UnityEngine;
using System.Collections;
/// <summary>
/// People test.
/// 使用角色控制器,控制角色移动(播放动画)
/// eg:移动到鼠标点击的位置(地面上走)
/// </summary>
public class PeopleTest : MonoBehaviour {Animation _ani;CharacterController _characterCtrl;//人物移动的目的地Vector3 _v = Vector3.zero;void Awake(){_ani = GetComponent<Animation> ();_characterCtrl = GetComponent<CharacterController> ();}void Update(){if (Input.GetMouseButtonDown (0)) {//射线:从相机位置向鼠标点击位置法射射线Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition);//射线碰撞的信息RaycastHit hit;if (Physics.Raycast (ray, out hit)) {//检测射线是否发生碰撞,(碰到地面、人、墙)_v = hit.point; //碰撞的这个点}}if (Vector3.Distance (_v, transform.position) > 0.5f) {Debug.Log ("Run");transform.LookAt (_v);_ani.Play ("Run");_characterCtrl.SimpleMove (transform.forward * 5);} else {_ani.Play ("Idle");}}
}

会出现的bug:
1. 人物角色控制器脚本里的碰撞器和地面的碰撞器不要重合,叠在一起,否则会出现一直往某地转圈的情况
2. 如果点自己会出现bug,因为射线没有做具体判断,可以加上一个if条件判断一下

例图

例子二

在手游上,通过摇杆(Axis判断)控制人物移动

using UnityEngine;
using System.Collections;
/// <summary>
/// People test.
/// 使用角色控制器,控制角色移动(播放动画)
/// eg:wasd移动,用轴线Axis的值计算(地面上走)
/// </summary>
public class PeopleTest : MonoBehaviour {Animation _ani;CharacterController _characterCtrl;//人物移动的目的地Vector3 _v = Vector3.zero;void Awake(){_ani = GetComponent<Animation> ();_characterCtrl = GetComponent<CharacterController> ();}void Update(){float x = Input.GetAxis ("Horizontal");float z = Input.GetAxis ("Vertical");if (x != 0 || z != 0) {_v.x = transform.position.x + x;_v.z = transform.position.z + z;_v.y = transform.position.y;transform.LookAt (_v);_ani.Play ("Run");_characterCtrl.SimpleMove (transform.forward * 2);} else {_ani.Play ("Idle");}}
}

注意

SimpleMove() : 会受到重力的影响
Move() : 不会受到重力的影响 (不常用)
区别 : 当时有SimpleMove()人物不会默认滑动
使用Move()人物会默认滑动(位置改变)

unity 角色控制器CharaterController脚本相关推荐

  1. unity角色控制器简介

    Character Controller 用于应用到会动的游戏对象上,添加角色控制器后,会自动添加一个胶囊碰撞体 主要参数说明: Slope Limit:坡度限制 Step Offset:台阶高度 - ...

  2. Unity 角色控制器重复使用Ragdoll布娃娃系统,动画控制和布娃娃状态切换

    大家好,今天开发游戏的时候做了Ragdoll相关的功能,于是写写心得. 如果要在单一物体重复使用Ragdoll布娃娃系统,那我们需要对物体设置两个状态,一个是正常状态,受动画系统控制,一个是布娃娃状态 ...

  3. Unity自定义角色控制器(一):碰撞检测

    我实在很喜欢用Unity.它在处理很多底层问题的同时有给了开发者很多自由.而且它还有着非常活跃的社区,起到了很大的帮助. 不幸的是,之前也说了,Unity也带着世界上最糟糕的角色控制器.在与Unity ...

  4. Unity3D 角色控制器 Character Controller

    添加组件 角色控制器组件介绍 [Slope Limite]爬坡角度限制(如图限制爬坡角度为10度,超过10度的斜坡无法前进) [Step Offset]脚步长度限制 [Skin Width]和胶囊体相 ...

  5. Unity手游之路lt;七gt;角色控制器

    我们要控制角色的移动,能够所有细节都由自己来实现.控制角色模型的移动,同一时候移动摄影机,改变视角.当然Unity也提供了一些组件,能够让我们做更少的工作,实现我们所期望的功能.今天我们就一起系统来学 ...

  6. Unity 第三人称角色控制器:动画混合树、Cinemachine等功能或插件的使用

    前言: 无论是RPG.ACT.AVG还是TPS游戏,都有大量的以第三人称为人物视角的游戏作品,尤其是TPS,直接以第三人称为特点来命名 游戏类型: RPG:角色扮演游戏 ACT:动作游戏 AVG:冒险 ...

  7. Unity超级角色控制器研究(四)——地形检测

    一个地形检测反例 因此我们想知道什么在角色脚底下呢?首先是距离脚下有多远.我们会想知道角色的脚是否贴着地面还是在半空中.我们还会想知道脚下地面具体位置坐标,这对于上一章强调过的钳住地面是很重要的.第三 ...

  8. 详解Unity中的角色控制器

    前言 如何让玩家所操纵的角色动起来,这在Unity中很容易实现,但是如何确保玩家所操作的角色不会产生一些非常违反物理常识的情况?而这就需要进行大量的检测,已确保玩家所操纵的角色正常.所幸Unity为我 ...

  9. Unity:角色控制器(CharacterController)

    角色控制器是unity中专门用来控制角色的组件(主要是运动相关),区别于直接用Transform或者RigidBody,CharacterController有着更好的效果,它拥有RigidBody的 ...

  10. 【Unity游戏开发教程】零基础带你从小白到超神16——四种方法控制人物移动之角色控制器

    角色控制器 控制人物移动的四种方式 直接修改组件位置 去资源商城下载角色控制系统成品 unity提供的角色控制器组件 Character Controller API 通过物理系统自己做 拓展 常用的 ...

最新文章

  1. NASA艾姆斯研究中心将跟Uber团队展开合作
  2. 使用 PEAR的Text_CAPTCHA保护Web表单[翻译]
  3. Openwrt按键检测分析-窥探Linux内核与用户空间通讯机制netlink使用
  4. 窗口分析函数_10_计算组总和的占比
  5. 最近很火的MySQL:抛开复杂的架构设计,MySQL优化思想基本都在这
  6. 最近提交一个mysql5.7的bug,提醒自己以后注意写SQL要规范
  7. 地平线机器人_地平线机器人CEO余凯:基于深度学习的自动驾驶之路
  8. JAVA遍历21位数
  9. 玩转springboot2.x之快速搭建(start.spring.io)
  10. iOS 播放音频的几种方法
  11. js文件之间函数的调用
  12. Linux安装gcc方法(超简单安装)
  13. LWIP协议 | 理论基础知识解析
  14. 无惧失败,做一只逆流而上的鱼
  15. widows 程序无响应判断,程序假死状态
  16. 测量学7_地形图的基本知识
  17. 文件锁(一)——文件锁的概述
  18. Ubuntu18.04主题美化教程
  19. 改造一台可以计算滤芯使用寿命的智能空气净化器——嵌入式功能实现篇
  20. RISC-V生态架构浅析(认识RISC-V)

热门文章

  1. 网站、手机验证码开发(手机注册验证)
  2. 2019年支付宝集五福秘笈!内含攻略及互助群
  3. 常见神经网络结构拓扑图
  4. python跑完代码后怎么办_2017/06/14跑成功了的代码,FYI
  5. html5 app 原理,浅析开发html5 app的三大优势
  6. 八猴渲染器4.0基本使用教程及渲染教程
  7. 电商系统(毕业设计)
  8. Vue进阶(幺捌零):Vue优质开源项目汇总(持续更新中...)
  9. Android 常用图标尺寸及设计规范汇总
  10. 训练网络时指定gpu显卡