PS:公司终于给我派任务了,最近几天都没学Unity🤧。
一、角色控制器的实现方式
目前小编知道的角色控制器实现方式有三种:
- 应用商店的角色控制系统
- Unity自己的角色控制器
- 通过物理系统去做角色控制器
本篇介绍的是第二种Unity自己的角色控制器,实现起来也较为简单。
二、虚拟轴
2.1 概念
在实现角色控制器之前先介绍一个概念:虚拟轴,可以看做游戏手柄的摇杆。
这是来自飞羽老师书上关于虚拟轴概念的截图:
比如左和右对应键盘的A和D就可以看做一个虚拟轴。
Unity角色控制器的实现是通过获取虚拟轴创建方向向量加上移动来实现的
2.2 查看Unit的的虚拟轴设置
编辑 ——> 项目设置 ——> 输入管理器,在轴线里边查看:
比如说这里的水平轴,名称为Horizontal,我们获取水平轴的时候就是通过名称来获取,a和d就是代表对应键盘的键位,我们也可以自己编辑改变键位。
三、角色控制器
开始动手实现角色移动:
- 新建两个3D对象,一个平面一个胶囊,平面代表地面胶囊代表我们控制的角色。
- 给胶囊添加组件Rigidbody、Character Controller
- 新建一个脚本命名为Move Control挂载到胶囊上,打开编辑脚本
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class MoveControl : MonoBehaviour
{//获取角色控制组件private CharacterController player;void Start(){player = GetComponent<CharacterController>();}// Update is called once per framevoid Update(){//获取水平轴 左右方向float horizontal = Input.GetAxis("Horizontal");//获取垂直轴 前后方向float vertical = Input.GetAxis("Vertical");//创建成一个方向向量,第二个参数数值为 0 防止原地起飞Vector3 dir = new Vector3(horizontal, 0, vertical);//player.Move(dir); //不受重力影响 player.SimpleMove(dir*10); //受重力影响}
}
方向向量用来控制角色移动方向,移动在Unity的方法有两个,这里我们用受重力影响的SimpleMove方法。dir*10 这里的 *10代表了移动速度*10,当然你想做一个闪电侠也可以 *9999999,保证让你连影子都看不到😋
我们来看一下效果:可以看到在重力组件的作用下我们控制闪电侠跳崖了😃
离做一个fps游戏demo又近了一步,拜拜┏(^0^)┛~