检测并跟随玩家

时间:2019-07-12 16:07:43

标签: c# unity3d

我开始了一个新游戏。我有一个敌人,当玩家与敌人有一定距离时,他会进攻。我的脚本起作用并且敌人跟随玩家,但是尽管我在此处设定了数字玩家。 只有在与玩家足够接近之后,我才需要敌人跟随。 我的敌人有一个空物体,上面放着剧本。

我在团结社区的答案中寻找答案,并找到了我在此链接https://answers.unity.com/questions/274809/how-to-make-enemy-chase-player-basic-ai.html中使用的脚本 而且我已经用谷歌搜索了它,但是找不到任何正确的解决方案。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class AIController : MonoBehaviour
{
    public int AttackTrigger2;
    public Transform Player;
    public int MoveSpeed = 4;
    public int MaxDist = 10;
    public int MinDist = 5;

    void Update()
    {
        transform.LookAt(Player);

        if (Vector3.Distance(transform.position, Player.position) >= MinDist)
        {               
            transform.position += transform.forward * MoveSpeed * Time.deltaTime;       
            if (Vector3.Distance(transform.position, Player.position) <= MaxDist)
            {
                //Here Call any function U want Like Shoot at here or something
            }   
        }
    }
}

我的代码没有错误,他做了我需要的,但是我需要敌人在玩家离开一定距离后停止跟随玩家。

2 个答案:

答案 0 :(得分:2)

我猜您所链接的论坛中的下一个答案实际上可以解决您的问题。问题是简单的复制和粘贴,而没有理解为什么某些东西会表现出应有的状态。在这种情况下:

>= MinDist 

在这种情况下,如果敌人大于或等于MinDist(在这种情况下为5),则意味着敌人会跟随玩家。

<= MaxDist

,以便只有在距离敌人少于10时敌人才会跟随。如果距离超过10,请停止关注。

答案 1 :(得分:1)

在第一种if情况下,您应该更改条件。 根据您的密码,如果敌人之间的距离比MinDist更大,敌人将跟随玩家。 将>=替换为<=。 而且我认为您可能想要这样的东西。

if (Vector3.Distance(transform.position, Player.position) <= MaxDist)//not MinDist
        {               
            transform.position += transform.forward * MoveSpeed * Time.deltaTime;       
            if (Vector3.Distance(transform.position, Player.position) <= MinDist)//not MaxDist
            {
                //Here Call any function U want Like Shoot at here or something
            }   
        }