• 主页

  • 投资

  • IT

    🔥
  • 设计

  • 销售

  • 共151篇

    Unity - 游戏引擎

关闭

返回栏目

关闭

返回Unity - 游戏引擎栏目

37 - C# - 角色控制器 - CharacterController

作者:

贺及楼

成为作者

更新日期:2024-05-09 19:43:55

作用:控制角色CharacterController

两种方法:

1、SimpleMove(Vector3: vector3&speed)重力
简单移动,可以根据vector3方向移动,物体不需要添加刚体即受重力影响,不需要添加碰撞器即可以产生碰撞,但无法推动其它物体。

2、Move(Vector3: vector3&speed)无重力
移动,根据vector3方向移动,速度比SimpleMove快许多,不受重力影响,但可以在不添加碰撞器的情况下产生碰撞,无法推动其它物体。

代码

  1. using UnityEngine;
  2. using System.Collections;
  3. public class PlayerCC : MonoBehaviour {
  4. public float speed = 3;
  5. private CharacterController charCtl ;
  6. // Use this for initialization
  7. void Start () {
  8. charCtl = GetComponent<CharacterController>() ;
  9. }
  10. // Update is called once per frame
  11. void Update () {
  12. float h = Input.GetAxis("Horizontal");
  13. float v = Input.GetAxis("Vertical");
  14. charCtl.SimpleMove(new Vector3(h, 0, v)* speed) ;
  15. charCtl.Move(new Vector3(h, 0, v)* speed* TimeDeltaTime) ;
  16. }
  17. }

代码解释

  1. using UnityEngine;
  2. using System.Collections;
  3. public class PlayerCC : MonoBehaviour {
  4. public float speed = 3;//速度
  5. private CharacterController charCtl ;//目标物体
  6. // Use this for initialization
  7. void Start () {
  8. charCtl = GetComponent<CharacterController>() ;//目标物体,获得组件
  9. }
  10. // Update is called once per frame
  11. void Update () {
  12. float h = Input.GetAxis("Horizontal");//变量
  13. float v = Input.GetAxis("Vertical");//变量
  14. charCtl.SimpleMove(new Vector3(h, 0, v)* speed) ;//方法1
  15. charCtl.Move(new Vector3(h, 0, v)* speed* TimeDeltaTime) ;//方法2
  16. }
  17. }

使用:

1.物体添加CharacterController组件
2.注意文件命名空间
3.多用SimpleMove方法