我讓敵人沿著設定的路徑(路徑點)移動,但是我希望敵人在您距離玩家一定距離內時跟隨玩家,但是當超出該距離時,敵人會回到其路徑點并繼續前進路徑,直到玩家再次在一定距離內。所以它一直在這樣做。下面是我得到的讓敵人沿路點移動的代碼。我正在使用 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.
}
接下來是您自己的選擇,用于在此處讀取距離文檔時設置的向量的歸一化

慕的地6264312
TA貢獻1817條經驗 獲得超6個贊
Arslan 的回答很好 - 只需對代碼稍作更改,您就知道它也可以通過這種方式完成...
var distVal=5.0f;
if (Vector3.Distance(enemyTransform.position, playerTransform.position) < disVal)
{
Debug.Log("Enemy following you");
}
它大致相同,但很高興知道它存在的其他方式。
- 2 回答
- 0 關注
- 210 瀏覽
添加回答
舉報
0/150
提交
取消