自动寻路的配置
-
为路上的地面和障碍物勾选好好static -
在导航面板出烘焙 -
玩家身上挂载代理组件 -
烘焙完成
其中Navigation static是一般障碍物的,下面那个Off Mesh Link Generation是可跳跃的地面勾选的这样才能在可跳跃面板搜到他。
部分代码实现
玩家类挂在玩家身上
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;
public class Player : MonoBehaviour
{
private NavMeshAgent agent;
private LineRenderer lineRender;
void Start()
{
agent = transform.GetComponent<NavMeshAgent>();
lineRender = transform.GetComponent<LineRenderer>();
if (agent==null)
{
Debug.LogError("未找到代理!!!");
}
}
private void Update()
{
DrawLine();
}
public void MoveToTarget(Vector3 tar)
{
agent.SetDestination(tar);
}
public void DrawLine()
{
if (lineRender!=null)
{
lineRender.positionCount = agent.path.corners.Length;
lineRender.SetPositions(agent.path.corners);
}
}
}
挂在其他物体上控制玩家的代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerController : MonoBehaviour
{
public Player currentAgent;
public RaycastHit hit;
void Update()
{
if (Input.GetMouseButton(1))
{
if (Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition),out hit,1000,1<<8))
{
if (currentAgent!=null)
{
currentAgent.MoveToTarget(hit.point);
}
}
}
}
}
此处只做出了移动,跳跃和爬楼梯可以去B站看视频
|