博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Unity角色控制器CharaterController脚本
阅读量:6345 次
发布时间:2019-06-22

本文共 1302 字,大约阅读时间需要 4 分钟。

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

常用属性介绍
Slop Limit : 坡度的限制,限制角色可以爬坡的最大角度
Step Offset : 高度限制,上楼梯时一步的最大高度
Skin Width : 皮肤厚度
Min Move Distance : 最小移动距离
Center : 角色控制中心
Radius : 角色控制器的半径
Height : 角色控制器的高度

这些值一般由策划设置

例子一

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

1
using UnityEngine;
2
using System.Collections;
3
///
4
/// People test.
5
/// 使用角色控制器,控制角色移动(播放动画)
6
/// eg:移动到鼠标点击的位置(地面上走)
7
///
8
public class PeopleTest : MonoBehaviour {
9
Animation _ani;
10
CharacterController _characterCtrl;
11
//人物移动的目的地
12
Vector3 _v = Vector3.zero;
13
void Awake(){
14
_ani = GetComponent ();
15
_characterCtrl = GetComponent ();
16
17
void Update(){
18
if (Input.GetMouseButtonDown (0)) {
19
//射线:从相机位置向鼠标点击位置法射射线
20
Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition);
21
//射线碰撞的信息
22
RaycastHit hit;
23
if (Physics.Raycast (ray, out hit)) {
24
//检测射线是否发生碰撞,(碰到地面、人、墙)
25
_v = hit.point; //碰撞的这个点
26
27
28
if (Vector3.Distance (_v, transform.position) > 0.5f) {
29
Debug.Log ("Run");
30
transform.LookAt (_v);
31
_ani.Play ("Run");
32
_characterCtrl.SimpleMove (transform.forward * 5);
33
} else {
34
_ani.Play ("Idle");
35
36
37
会出现的bug:

  1. 人物角色控制器脚本里的碰撞器和地面的碰撞器不要重合,叠在一起,否则会出现一直往某地转圈的情况
  2. 如果点自己会出现bug,因为射线没有做具体判断,可以加上一个if条件判断一下
    更多unity2018的功能介绍请到paws3d学习中心查找。

转载地址:http://udjla.baihongyu.com/

你可能感兴趣的文章
nasm预处理器(2)
查看>>
二叉排序树 算法实验
查看>>
Silverlight 5 beta新特性探索系列:10.浏览器模式下内嵌HTML+浏览器模式下创建txt文本文件...
查看>>
YourSQLDba 配置——修改备份路径
查看>>
nginx web服务理论与实战
查看>>
java 库存 进销存 商户 多用户管理系统 SSM springmvc 项目源码
查看>>
网易音乐版轮播-react组件版本
查看>>
ES6 - 函数与剩余运算符
查看>>
你对position了解有多深?看完这2道有意思的题你就有底了...
查看>>
WebSocket跨域问题解决
查看>>
ECMAScript6基本介绍
查看>>
世界经济论坛发布关于区块链网络安全的报告
查看>>
巨杉数据库加入CNCF云原生应用计算基金会,共建开源技术生态
查看>>
Ubuntu 16.04安装Nginx
查看>>
从 JS 编译原理到作用域(链)及闭包
查看>>
flutter 教程(一)flutter介绍
查看>>
CSS面试题目及答案
查看>>
【从蛋壳到满天飞】JS 数据结构解析和算法实现-Arrays(数组)
查看>>
每周记录(三)
查看>>
Spring自定义注解从入门到精通
查看>>