Unity已经帮我们实现了“上,下,左,右,跳跃”等相对复杂的逻辑操作,并且将他们封装成了角色控制器组件。角色控制器组件和刚体组件均具备物理引擎功能,只是角色控制器组件的物理效果没有刚体组件精确。调用角色控制器需先添加Character Controller资源包,然后选中游戏对象,在导航菜单中选择“Component”——“Physics”——”Character Controller”即可。我们通过调用角色控制器组件的
SimpleMove()或者是Move()方法可实现Player的移动,但是需要说明的是SimpleMove()方法只适合平面移动,及在X轴和Z轴上移动,而Move()则适用于X,Y,Z三个空间轴上的移动,所以实际开发中尽量选择Move()方法。下面贴出脚本:
using UnityEngine;
using System.Collections;
public class controller_move_test : MonoBehaviour {
private CharacterController controler=null;//定义角色控制器对象
private float movespeed=5.0f;//每一帧移动速度
private float rotatespeed=3.0f;//每一帧旋转速度
// Use this for initialization
void Start () {
controler=GetComponent<CharacterController>();//获取角色控制器组件
}
// Update is called once per frame
void Update () {
}
void OnGUI(){
//左转
if(GUILayout.RepeatButton("rotate left")){
transform.Rotate(0,-rotatespeed,0);
}
//右转
if(GUILayout.RepeatButton("rotate right")){
transform.Rotate(0,rotatespeed,0);
}
//前移
if(GUILayout.RepeatButton("forward")){
Vector3 forward=transform.TransformDirection(Vector3.forward);
controler.Move(forward*movespeed);
}
//后移
if(GUILayout.RepeatButton("back")){
Vector3 forward=transform.TransformDirection(Vector3.forward);
controler.Move(forward*-movespeed);
}
//上移
if(GUILayout.RepeatButton("up")){
transform.Translate(0,1,0);
}
下移
if(GUILayout.RepeatButton("down")){
transform.Translate(0,-1,0);
}
}
}