敵キャラクターの作り方4:ランダムな地点に向かう敵

巡回する敵の次はランダムに移動する敵を作ります。といっても完全にランダムだとメチャクチャな動きになってしまうので、ここでは前回作った巡回する敵のスクリプトを少しだけ修正して「ランダムな地点に向かう敵」を作ってみましょう。

スポンサーリンク

ランダムな地点に向かう敵のC#スクリプト

using UnityEngine;

public class SlimeController : BaseEnemyController
{

	int destinationIndex = 0;
	GameObject[] navPointsObj;

	protected override void Start()
	{
		base.Start();

		navPointsObj = GameObject.FindGameObjectsWithTag("NavPoint");

		GetNextPoint();
	}

	protected override void Move()
	{
		if (navPointsObj.Length == 0)
		{
			return;
		}

		rigidBody.velocity = agent.desiredVelocity;

		//今の目標地点に近づいてきたら、次の目標地点を設定
		if (!agent.pathPending && agent.remainingDistance < 0.5f)
		{
			GetNextPoint();
		}
	}

	void GetNextPoint()
	{
		if (navPointsObj.Length == 0)
		{
			return;
		}

		destinationIndex = Random.Range(0, navPointsObj.Length);
		target = navPointsObj[destinationIndex].transform;
		agent.SetDestination(target.position);
	}

}

変更点はほんのわずかで、地点を順番に選ぶのではなくRandom.Range()メソッドでランダムに選択するようにしただけです。ちなみにRandom.Range()メソッドはInt型を引数に取ったときは最大値を候補に含まないので注意してください。

次のページ→敵キャラクターの作り方5:プレイヤーに近い地点に向かう敵