1

我已经创建了 navMeshand 代理。对于目标,我使用了两个空对象。对于每个空对象,我创建了两个按钮。

如果我点击白色按钮代理首先移动到空目标我点击红色按钮代理移动到第二个空目标。

当我想将代理从target-2移动到target-1时,我遇到了问题。 我怎样才能将该代理移动到 taeget-1?

观看视频以更好地理解

视频链接https://youtu.be/zRKHdMeQsi0

代码

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;
public class SampleAgentScript : MonoBehaviour {

    public Transform target , target2;
    NavMeshAgent agent;
    private static bool start1=false , start2=false;

    void Start()
    {
        agent = GetComponent<NavMeshAgent>();
    }

    public static void buttonClick()
    {
        //if white button click
        start1 = true;
    }

    public static void buttonClick2()
    {
        //if red button click
        start2 = true;
    }

    void Update()
    {
        if (start1) //if white button click moves to targer-1
        {
            agent.SetDestination(target.position);
        }

        if (start2) //if red button click moves to targer-2
        {
            agent.SetDestination(target2.position);
        }
    }
}
4

3 回答 3

1

您忘记通过将布尔值重置为 false 来更改状态。由于您在按钮单击处理程序中设置了布尔值,因此您也可以在更新函数中交替状态。

void Update()
{
    if (start1) //if white button click moves to targer-1
    {
        agent.SetDestination(target.position);
        start1=false;
    }

    if (start2) //if re button click moves to targer-2
    {
        agent.SetDestination(target2.position);
        start2=false;
    }
}
于 2018-10-29T09:59:50.910 回答
1

可能这会有所帮助。

public static void buttonClick()
{
      //if white button click
    start1 = true;
    start2 = false;
}

public static void buttonClick2()
{
     //if red button click
    start2 = true;
    start1 = false;
}
于 2018-10-29T09:24:52.760 回答
0

当您单击第二个按钮时,两个条件都变为真,并且在每一帧中您都设置了两个不同的目的地。

public Transform dest, target , target2;

public void buttonClick()
{
     dest = target;
}

public void buttonClick2()
{
     dest = target2;
}

void Update()
{
     agent.SetDestination(dest .position);
}
于 2018-10-29T09:32:02.930 回答