Unity人物移动+自动寻路+通过角色控制器控制移动

1. Unity人物移动+自动寻路

using UnityEngine;
using System.Collections;

public class PlayerCtrl : MonoBehaviour 
{
    public float MoveSpeed, RoteSpeed;

    private Ray ray;
    private RaycastHit hit;

    private UnityEngine.AI.NavMeshAgent _NMA;
    private Animator _Anima;
    private bool IsRun;//是否奔跑
    private float ver, hor;

    private int IsRunBoolID;//IsRun的Hash  
    
    void Awake ()
    {
        //得到自身组件
        _Anima = GetComponent<Animator>();
        _NMA = GetComponent<UnityEngine.AI.NavMeshAgent>();
        //IsRunBoolID = Animator.StringToHash("IsRun");  //Hash-1
    }//end_Start
    
    void Update ()
    {
        //动画
        //_Anima.SetBool(IsRunBoolID, IsRun);            //Hash-2
        _Anima.SetBool("IsRun", IsRun);

        //鼠标点击移动
        if (Input.GetMouseButtonDown(0))
        {
            //射线投射信息
            ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            if (Physics.Raycast(ray, out hit))
            {
                //导航到鼠标点击出
                _NMA.destination = hit.point;               
                //重新开启导航
                _NMA.Resume();              
            }            
        }

        //WASD控制移动
        hor = Input.GetAxis("Horizontal");
        ver = Input.GetAxis("Vertical");
        //hor或ver不为0,表示有从wasd的输入,所以要终止导航,自己操作
        if (ver!=0||hor!=0)
        {
            //关闭导航
            _NMA.Stop();
            IsRun = true;
            //移动和旋转
            transform.Translate(0, 0, ver * MoveSpeed * Time.deltaTime);
            transform.Rotate(0, hor * RoteSpeed * Time.deltaTime, 0);
        }
        else
        {
            //如果wasd输入为0,才可能会自动导航
            //导航的速度为0的时候,不奔跑;不为0,奔跑
            if (_NMA.desiredVelocity!=Vector3.zero)
            {
                IsRun = true;
            }
            else
            {
                IsRun = false;
            }
        }       
    }//end_Update
}

2. 通过角色控制器控制移动

通过角色控制器控制移动.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Unity自动寻路指南 主要参考Naviation这个文档。本文不关注自动寻路的原理,如有需要可以在这里查看nav...
    xFerris阅读 4,324评论 0 4
  • 方法一 var look = new Vector3(Camera.main.transform.position...
    自由的天空阅读 2,186评论 1 1
  • 经研究证明魔芋具有降脂、降糖、防癌、通便等多种功用。魔芋含有葡苷聚糖,是一种高分子化合物,具有很强的吸水性,吸水后...
    钰海起航_597f阅读 562评论 0 3
  • 曲曲池边路,春来少人行。 含水芙蓉叶,春去气犹清。 夕岚分彩翠,高树藏莺声。 乍向风中看,花落更分明。 徘徊觉露冷...
    十月芙蓉非芙蓉阅读 512评论 0 0