关于Nav Mesh Obstacle的,自动导航那一块的,不勾选Carve情况下,我的Player完美运行,勾选了就只能走一次,站定了就不能再走了,除非我在每一次行走前把Nav Mesh Obstacle组件移除,然后在站立的一瞬间给添加上去,但这并不是一种理想的解决方案啊!
不多说,直接上代码:
using UnityEngine;
using System.Collections;
public class MoveToClickPoint : MonoBehaviour
{
NavMeshAgent myAgent;
NavMeshObstacle myObstacle;
// Use this for initialization
void Start()
{
myAgent = GetComponent<NavMeshAgent>();
myObstacle = GetComponent<NavMeshObstacle>();
myAgent.enabled = true;
myObstacle.enabled = false;
myAgent.speed = 8;
}
// Update is called once per frame
void Update()
{
if (Input.GetMouseButton(0))
{
RaycastHit hit;
if (Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out hit))
{
myObstacle.enable = false;
myAgent.enabled = true;
myAgent.SetDestination(hit.point);
}
}
if (myAgent.enabled && myAgent.remainingDistance < 2 && myAgent.remainingDistance > 0.5f)
{
myAgent.Stop(true);
myAgent.enabled = false;
myObstacle.enable = true;
}
}
}
不多说,直接上代码:
using UnityEngine;
using System.Collections;
public class MoveToClickPoint : MonoBehaviour
{
NavMeshAgent myAgent;
NavMeshObstacle myObstacle;
// Use this for initialization
void Start()
{
myAgent = GetComponent<NavMeshAgent>();
myObstacle = GetComponent<NavMeshObstacle>();
myAgent.enabled = true;
myObstacle.enabled = false;
myAgent.speed = 8;
}
// Update is called once per frame
void Update()
{
if (Input.GetMouseButton(0))
{
RaycastHit hit;
if (Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out hit))
{
myObstacle.enable = false;
myAgent.enabled = true;
myAgent.SetDestination(hit.point);
}
}
if (myAgent.enabled && myAgent.remainingDistance < 2 && myAgent.remainingDistance > 0.5f)
{
myAgent.Stop(true);
myAgent.enabled = false;
myObstacle.enable = true;
}
}
}