我开始了一个新游戏。我有一个敌人,当玩家与敌人有一定距离时,他会进攻。我的脚本起作用并且敌人跟随玩家,但是尽管我在此处设定了数字玩家。 只有在与玩家足够接近之后,我才需要敌人跟随。 我的敌人有一个空物体,上面放着剧本。
我在团结社区的答案中寻找答案,并找到了我在此链接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
}
}
}
}
我的代码没有错误,他做了我需要的,但是我需要敌人在玩家离开一定距离后停止跟随玩家。
答案 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
}
}