Unity物理引擎—角色控制器

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);

 

}

 

}

 

}

原文地址:https://www.cnblogs.com/niguang/p/niguangnishi.html