見出し画像

落とし穴 ボスは穴から遠ざかるがエキサイトすると我を忘れる!

前回の落とし穴

前回は、ボスゴーレムの登場を過去のコードを重ね技で作った。
今回は、ボスが穴から遠ざかるようにしてみる。

今日のハイライト

落とし穴の想い出 モンハンワールド

モンハン面白いが、モンハン持ちがつらくてあまりやってなかった。
だが、ワールドはモンハン持ちしなくて良いのでかなりやった。
ワールドは、坂道を見つけて統べるのが凄く楽しかった。
地形を観察して敵をジャンプ攻撃。
ジャンプのないモンハンでジャンプができるってのもワールドが好きな理由。落下したり空中に舞い上がったり、高低差の遊びが加わったワールドは、アクションゲーム度が上がって色んな参考になった。




ボスは穴に近寄らない

ボスが穴の近くで止まってしまうと簡単に落とせてしまうので、近くの穴を検出して一定の範囲外に出るようにする。

ボスが近くの穴から遠ざかる動作を実装するには、以下のステップを踏みます。
①近くの穴を検出する
②穴との距離を計算する
③穴が一定の範囲内にいる場合、その敵から遠ざかる方向にボスを動かす

ChatGPT

ChatGPTのサンプルコードを元に修正。

ボス(obj_boss_golem)のステップイベント

// 索敵
detection_timer += 1; 
if (detection_timer >= detection_interval and !damage_hit and !dizzy and !appear) {

	// 穴から遠ざかる

	// 自分の位置
	var gx = x;
	var gy = y;

	// 穴オブジェクトのリストから最も近い穴を探す
	var closest_hole = noone;
	var closest_distance = hole_dist; // 探索範囲(ピクセル)

	with (obj_hole) { 
		var distance_to_hole = point_distance(gx, gy, x, y);
		if (distance_to_hole < closest_distance) {
		    closest_distance = distance_to_hole;
		    closest_hole = id;
		}
	}

	if (closest_hole != noone and !damage_hit and !dizzy and !appear and !chasing) {

		// 近くの穴を見つけた
		hole = true;

		// 穴の位置
		var hx = closest_hole.x;
		var hy = closest_hole.y;

		// 穴から遠ざかる方向ベクトルを計算
		direction = point_direction(hx, hy, gx, gy);
		speed = spd; // 移動速度
		sprite_index = spr_boss_golem_move;
		alarm[0] = 30;

	} else {
		image_blend = c_white;
	}

	
	detection_timer = 0;
}

穴を探すのも一定時間にして、ダメージ状態などを除外。
鬼プレス状態だと、穴から逃げないようにした。

ゲームでテスト

穴から距離を取るのが分かりにくいので、体を赤くしている。
鬼プレスだと関係なく追いかけるようにしたことで、穴のそばまで危険を冒して誘導して落とすことも可能になった。


今年も誰かのお役に立てれば幸いです。


使用ツールとAI

ゲームツールは「GameMaker」

ドット絵ツールは「EDGE」

AIは「ChatGPT」


いいなと思ったら応援しよう!