使敌人在一定距离内跟随您

时间:2018-08-08 20:19:01

标签: c# unity3d move

我有敌人沿着设定的路径(航路点)移动,但是我希望当您在玩家的某个距离之内时,敌人跟随玩家,但当玩家离开该距离时,敌人会回到其路径点并继续沿着路径移动,直到玩家再次在一定距离内。因此,它一直在这样做。下面是我为敌人沿路点移动所获得的代码。

我正在使用Unity 2d和C#

[SerializeField]
Transform[] waypoints; //EnemyWayPoint;

[SerializeField]
float moveSpeed = 3f;
int waypointIndex = 0;

private void Start()
{
    transform.position = waypoints[waypointIndex].transform.position;
}


private void Update()
{
    Move();
}

private void Move()
{
    transform.position = Vector3.MoveTowards(transform.position, waypoints[waypointIndex].transform.position, moveSpeed * Time.deltaTime);

    if (transform.position == waypoints[waypointIndex].transform.position) { 
        waypointIndex += 1;
    }

    if (waypointIndex == waypoints.Length)
        waypointIndex = 0;
    }
}

2 个答案:

答案 0 :(得分:1)

使用 Vector3.Distance(otherPos,transformPos)检查敌人与玩家之间的距离 并根据您的选择检查距离是否小于 distVal ,那么敌人应该跟随或采取行动

var distVal=5.0f;
var dis=Vector3.Distance(enemyTransform.position,playerTransform.position);
if(dis<=disVal)
{
  //what enemy should do.
}

下一步是对距离文档here读取时设置的向量进行归一化的自己选择。

答案 1 :(得分:0)

阿尔斯兰的答案很好- 只需在代码上稍作更改,就可以用这种方式完成代码...

#ifndef CONTAINER
#define CONTAINER

大致相同,但很高兴知道它的其他存在方式。