防止移动到最近的可能位置

时间:2017-03-13 22:16:14

标签: c# unity3d navigation path-finding

enter image description here

正如您在上图中所示,当我点击白色路径时,对象完全朝向点击位置移动。当我点击蓝色地面时,物体不会移动到那里,但它会在白色路径上找到最近的可能位置,这是我不想要的行为。

如果点击位于白色路径之外,我希望对象不移动。

检查器:

白色路径:导航静态 - 可步行

蓝色地面:没什么。

对象脚本:

void Update ()
    {
        if (Input.GetButtonDown("Fire1"))
        {
            Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition);
            RaycastHit hit;
            if (Physics.Raycast(ray, out hit, 100))
            {
                navAgent.destination = hit.point;
                navAgent.Resume();
            }
        }  
    }

1 个答案:

答案 0 :(得分:3)

  

如果点击位于白色之外,我希望对象不移动   路径。

您可以通过检查单击的对象来执行此操作。您可以使用hit.collider.name按名称进行检查,也可以使用hit.collider.CompareTag标记来查看点击的对象。我建议你使用标签。

创建名为" whitepath "的标记。然后将 whitepath GameObject设置为此标记。然后,您可以在光线投射后比较标签名称。 This是关于如何创建代码的Unity。

void Update()
{
    if (Input.GetButtonDown("Fire1"))
    {
        Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
        RaycastHit hit;
        if (Physics.Raycast(ray, out hit, 100))
        {
            //Check for white path
            if (hit.collider.CompareTag("whitepath"))
            {
                navAgent.destination = hit.point;
                navAgent.Resume();
            }
        }
    }
}