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