指点成金-最美分享吧

登录

Unity鼠标控制人物移动(即鼠标点击地面人物自动寻路到点击处)

佚名 举报

篇首语:本文由小编为大家整理,主要介绍了Unity鼠标控制人物移动(即鼠标点击地面人物自动寻路到点击处)相关的知识,希望对你有一定的参考价值。

public Texture2D point, doorway, attack, target, arrow;//不同的贴图    RaycastHit hitInfo;    public event Action OnMouseClicked;    public event Action OnEnemyClicked;    protected override void Awake()            base.Awake();        private void Update()            SetCursorTexture();        MouseControl();        void SetCursorTexture()//此处为更换贴图            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);        if(Physics.Raycast( ray, out hitInfo))                    //切换鼠标贴图            switch (hitInfo.collider.gameObject.tag)                            case "Ground":                    Cursor.SetCursor(target, new Vector2(16, 16), CursorMode.Auto);                    break;                case "Enemy":                    Cursor.SetCursor(attack, new Vector2(16, 16), CursorMode.Auto);                    break;                            void MouseControl()            if (Input.GetMouseButtonDown(0) && hitInfo.collider !=null)                    if (hitInfo.collider.gameObject.CompareTag("Ground"))                OnMouseClicked?.Invoke(hitInfo.point);//如果问号前为是,则执行问号后            if (hitInfo.collider.gameObject.CompareTag("Enemy"))                OnEnemyClicked?.Invoke(hitInfo.collider.gameObject);            if (hitInfo.collider.gameObject.CompareTag("AttackAble"))                OnEnemyClicked?.Invoke(hitInfo.collider.gameObject);            

前提:烘焙过地图

环境烘焙:

Window-->AI-->Navigation

在Object中,勾选Navigation Static(或在Inspector里选择Navigation Static)

弹出的窗口选择“No,this object only”,防止烘焙到场景上的其他物体

自动寻路鼠标射线被物体遮挡解决方法

1)在Hierarchy中选择会遮挡住鼠标射线的物体

在Layer中有个叫Ignore Raycast即忽略射线

2)将遮挡物中的collider关闭

以上是关于Unity鼠标控制人物移动(即鼠标点击地面人物自动寻路到点击处)的主要内容,如果未能解决你的问题,请参考以下文章