Unity3D日常开发实现角色移动行走之CharacterController组件

Posted 恬静的小魔龙

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity3D日常开发实现角色移动行走之CharacterController组件相关的知识,希望对你有一定的参考价值。



大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦。

一、前言

今天就分享一下如何让主角移动的脚本。

需要用到Unity 的CharacterController组件控制行走。

效果图:

【Unity3D日常开发】(一)实现角色移动行走之CharacterController组件_Player行走

二、实现

(1)新建一个Plane作为地面:

【Unity3D日常开发】(一)实现角色移动行走之CharacterController组件_unity_02

(2)让摄像机正对着地面,可以使用快捷键Ctrl+Shift+F,让摄像机快速对齐到屏幕:

【Unity3D日常开发】(一)实现角色移动行走之CharacterController组件_角色移动行走_03

(3)新建一个胶囊体,添加CharacterController组件:

【Unity3D日常开发】(一)实现角色移动行走之CharacterController组件_人物移动_04

【Unity3D日常开发】(一)实现角色移动行走之CharacterController组件_角色移动行走_05

(4)新建脚本PlayerMove.cs,编辑脚本:

using UnityEngine;

public class PlayerMove : MonoBehaviour

private CharacterController cc;
public float speed = 4;

void Start()

cc = GetComponent<CharacterController>();


void Update()

float h = Input.GetAxis("Horizontal");
float v = Input.GetAxis("Vertical");
if (Mathf.Abs(h) > 0.1f || Mathf.Abs(v) > 0.1)

Vector3 targetDir = new Vector3(h, 0, v);
transform.LookAt(targetDir + transform.position);
cc.SimpleMove(transform.forward * speed);


脚本解析:


1、使用Input.GetAxis(“Horizontal”) 和 "Vertical"得到键盘(操纵杆)输入的垂直和横向的值
2、使用CharacterController.SimpleMove(Vector3)设置物体运动的方向和速度
3、targetDir 是键盘输入之后获取到的方向,将目标用SimpleMove方法向获取到方向移动
4、transform.lookat 是让目标旋转到获取到的方向
5、transform.forward 是让目标向正前方移动


(4)将PlayMove脚本,附加到胶囊体上:

【Unity3D日常开发】(一)实现角色移动行走之CharacterController组件_人物移动_06

(5)运行程序,点击WSAD即可移动:

【Unity3D日常开发】(一)实现角色移动行走之CharacterController组件_Player行走



以上是关于Unity3D日常开发实现角色移动行走之CharacterController组件的主要内容,如果未能解决你的问题,请参考以下文章

unity3D:游戏分解之角色移动和相机跟随

Unity3D日常开发提高开发效率之定时器系统实现

Unity3D日常开发提高开发效率之定时器系统实现

unity3d怎么控制优先级

Unity3D游戏开发之换装系统的实现

[Unity3D] 多人游戏中镜头固定角度、随角色移动的实现方式