【问题标题】:AI Not Working?人工智能不工作?
【发布时间】:2017-01-17 09:33:21
【问题描述】:

你好,我正在尝试为我的角色创建一个 AI,但它不起作用 我希望它在视线中拍摄我的角色,但它只是在场景中徘徊而不是拍摄 甚至我的 debug.log 都不起作用

public Transform[] Targets;
private int DestPoint = 0;
private NavMeshAgent Agent;
public Transform Player;
public Rigidbody Bullet;
public Transform Instantiator;

void Start()
{
    Agent = GetComponent<NavMeshAgent> ();
    Agent.autoBraking = false;
}

void Update()
{
    if (Vector3.Distance(transform.position, Player.position) < 30f)
    {
        Debug.Log ("Shoot");
        transform.LookAt (Player);
        Shoot ();
    }
    else if (Vector3.Distance(transform.position, Player.position) > 30f)
    {
        GotoNextPoint ();
    }
}

void GotoNextPoint()
{
    Agent.destination = Targets [DestPoint].position;
    DestPoint = (DestPoint + 1) % Targets.Length;
}

void Shoot()
{
    Rigidbody Clone = Instantiate (Bullet, Instantiator.position, Instantiator.rotation) as Rigidbody;
    Clone.AddForce (Vector3.forward);
}

【问题讨论】:

  • 如果 debug.log 不起作用,那么 Vector3.Distance(transform.position, Player.position) 永远不会小于 30。debug.log 距离 if 之前的距离,看看会发生什么

标签: unity3d artificial-intelligence


【解决方案1】:

距离永远不会小于30。在你的else中:

else if (Vector3.Distance(transform.position, Player.position) > 30f)
{
    GotoNextPoint ();
}

Debug.Log(Vector3.Distance(transform.position, Player.position)); 这样你就可以看到你得到了什么值:

else if (Vector3.Distance(transform.position, Player.position) > 30f)
{
    Debug.Log(Vector3.Distance(transform.position, Player.position));
    GotoNextPoint ();
}

【讨论】:

    猜你喜欢
    • 2010-11-16
    • 1970-01-01
    • 1970-01-01
    • 2011-12-10
    • 1970-01-01
    • 1970-01-01
    • 2011-02-25
    • 2020-03-01
    • 2013-05-22
    相关资源
    最近更新 更多