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

Posted Akuyi

tags:

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

public Texture2D point, doorway, attack, target, arrow;//不同的贴图

    RaycastHit hitInfo;

    public event Action<Vector3> OnMouseClicked;
    public event Action<GameObject> 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鼠标控制人物移动(即鼠标点击地面人物自动寻路到点击处)的主要内容,如果未能解决你的问题,请参考以下文章

Unity 物体跟随鼠标点击移动,判断物体是否在移动

UE4 人物控制移动

求unity3d 用wasd与空格键控制人物移动的代码。

unity第一人称控制器怎么使用鼠标点击

Unity实现人物移动和镜头跟随

时光煮雨 Unity3D实现2D人物移动-总结篇