unity 角色控制系统的研究
自己学习时的笔记,是原创
(1)角色的移动问题
一般常见的平移方法有 3 种
第一种:transform.posion.x = 10;
这种方法最简单但是对于很多游戏由其是 3D 游戏来说不实用
第二种:利用 CharacterController 组件
在脚本 class 前面添加
[RequireComponent(typeof(CharacterController))]
脚本会自动给对象添加一个角色控制器
然后利用 mController.Move()函数来进行移动,传参给的是一个向量;
也可以用 simplemove()函数来进行移动,这个移动是自带重力的移动;
第三种:利用 Rigidbody 组件
在脚本 class 前面添加
[RequireComponent(typeof(Rigidbody))]
[RequireComponent(typeof(CapsuleCollider))]
脚本会自动给对象添加一个刚体重力组件和一个胶囊体碰撞检测器组件
一般情况下常见的几种移动函数分别是
m_Rigidbody.MovePosion();
m_Rigidbody.velocity = Vector3.forward * MoveSpeed; //3D 游戏中推荐使用这种
m_Rigidbody.AddForce();
注意:角色移动时一般用 Vector3 * MoveSpeed * Time.deltaTime 这样不会角色一下子就飞
出去了
角色移动时的键盘响应一般我们会使用,在菜单栏 Edit--Project Se4ng--Input 可以看到其设
置
Input.GetAxisRaw("Horizontal");
Input.GetAxisRaw("Vercal");
Input.GetAxis("Horizontal");
Input.GetAxis("Vercal");
Horizontal 代表水平轴,键盘的话默认是 A 和 D 键还有左和右键
Vercal 代表垂直轴,键盘的话默认是 W 和 S 键还有上和下键
加 Raw 的区别是返回值是-1,0,1 这三种之一,没按返回 0,按上返回 1,按下返回-1
不加 RAW 则返回三种数之间的差值,有点类似于压感操作