我有敌人沿着设定的路径(航路点)移动,但是我希望当您在玩家的某个距离之内时,敌人跟随玩家,但当玩家离开该距离时,敌人会回到其路径点并继续沿着路径移动,直到玩家再次在一定距离内。因此,它一直在这样做。下面是我为敌人沿路点移动所获得的代码。
我正在使用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;
}
}
答案 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
大致相同,但很高兴知道它的其他存在方式。