正如您在上图中所示,当我点击白色路径时,对象完全朝向点击位置移动。当我点击蓝色地面时,物体不会移动到那里,但它会在白色路径上找到最近的可能位置,这是我不想要的行为。
如果点击位于白色路径之外,我希望对象不移动。
检查器:
白色路径:导航静态 - 可步行
蓝色地面:没什么。
对象脚本:
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();
}
}
}
答案 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();
}
}
}
}