猿问

在一定距离内让敌人跟随你

我让敌人沿着设定的路径(路径点)移动,但是我希望敌人在您距离玩家一定距离内时跟随玩家,但是当超出该距离时,敌人会回到其路径点并继续前进路径,直到玩家再次在一定距离内。所以它一直在这样做。下面是我得到的让敌人沿路点移动的代码。


我正在使用 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;

    }

}


慕桂英546537
浏览 181回答 2
2回答

哈士奇WWW

使用Vector3.Distance(otherPos,transformPos) 检查敌人和玩家之间的距离,如果小于distVal,则根据您的选择检查距离,然后敌人应该跟随或执行动作var distVal=5.0f;var dis=Vector3.Distance(enemyTransform.position,playerTransform.position);if(dis<=disVal){&nbsp; //what enemy should do.}接下来是您自己的选择,用于在此处读取距离文档时设置的向量的归一化

慕的地6264312

Arslan 的回答很好 - 只需对代码稍作更改,您就知道它也可以通过这种方式完成...var distVal=5.0f;&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;if (Vector3.Distance(enemyTransform.position, playerTransform.position) < disVal)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Debug.Log("Enemy following you");&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }它大致相同,但很高兴知道它存在的其他方式。
随时随地看视频慕课网APP
我要回答