为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
慕桂英546537 2021-11-21 10:53:08
我让敌人沿着设定的路径(路径点)移动,但是我希望敌人在您距离玩家一定距离内时跟随玩家,但是当超出该距离时,敌人会回到其路径点并继续前进路径,直到玩家再次在一定距离内。所以它一直在这样做。下面是我得到的让敌人沿路点移动的代码。我正在使用 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 回答

?
哈士奇WWW

TA贡献1799条经验 获得超6个赞

使用Vector3.Distance(otherPos,transformPos) 检查敌人和玩家之间的距离,如果小于distVal,则根据您的选择检查距离,然后敌人应该跟随或执行动作


var distVal=5.0f;

var dis=Vector3.Distance(enemyTransform.position,playerTransform.position);

if(dis<=disVal)

{

  //what enemy should do.

}

接下来是您自己的选择,用于在此处读取距离文档时设置的向量的归一化


查看完整回答
反对 回复 2021-11-21
?
慕的地6264312

TA贡献1817条经验 获得超6个赞

Arslan 的回答很好 - 只需对代码稍作更改,您就知道它也可以通过这种方式完成...


var distVal=5.0f;        

if (Vector3.Distance(enemyTransform.position, playerTransform.position) < disVal)

            {

                Debug.Log("Enemy following you");

            }

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


查看完整回答
反对 回复 2021-11-21
  • 2 回答
  • 0 关注
  • 180 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信