見出し画像

AIと作る「シンメトリ☆ブロック自動配置システム」

Block Tennis × 自動配置システム

前回は、「BlockTennis」と「自動配置システム」をガッチャンコして色々調整した。
ただ、前回の自動配置システムでは、ブロックの配置が上か下に偏ってしまって相手の陣地に行きにくいので、今回は、上下の偏りがなくなるように自動配置システムを修正する。

上下どちらかに偏ってしまう


アドバイザーのAIはCopilotさん


ブロック自動配置システムを上下も対称に

これまでの自動配置システムでは左右対称だったが、今回は上下も対称にしてみる。

ブロックの配置を左右だけでなく上下も対称にしたい

ブロックの配置を左右だけでなく上下も対称にするためには、位置や座標の計算が重要になります。具体的には、ブロックを配置するための基本座標を定義し、それに基づいて対称的な位置を計算する方法が考えられます。

このコードでは、中央の基本座標から左右および上下に対称な位置にブロックを配置しています。base_xとbase_yは部屋の中心を示し、その周りにブロックを対称に配置しています。

これにより、ブロックが左右および上下対称に配置されるようになります。ぜひ試してみてください!

以下のコードは、ブロックを左右と上下の両方で対称に配置する例です:

Copilotさん

構造は理解したが、Copilotさんのコードはそのまま使えないので(詳細は前回の記事参照)、前回作ったコードに追加修正して実行すると以下のように上下対称に配置できた。

ブロックを上下も対称に自動配置

追加したコード

blocks_per_side = 5; // 上下に配置するので、ブロックの数を半分にする
center_y = room_height / 2; // Y座標の基準点の中央値を追加
// for内でブロックを配置するプログラムを以下に変更(y_positon[i] = _new_y;の下)

	// 上半分
	// 左側のブロック 
	instance_create_layer(center_x - _new_x - grid_size_y, center_y + _new_y, "Instances", obj_block); 
	// 右側のブロック 
	instance_create_layer(center_x + _new_x + grid_size_y, center_y + _new_y, "Instances", obj_block); 

	// 下半分
	// 左側のブロック 
	instance_create_layer(center_x - _new_x - grid_size_y, center_y - _new_y, "Instances", obj_block); 
	// 右側のブロック 
	instance_create_layer(center_x + _new_x + grid_size_y, center_y - _new_y, "Instances", obj_block); 

シンメトリ自動配置プログラムとBlockTennisをガッチャンコ。

シンメトリ自動配置システム

これで上下左右に対称にブロックが配置できた。

両陣営にボールが入っていくようになったが、コースによっては、中央に壁ができちゃうことがあるので、ボールの通り道ができるようにしてみようかなと思う。

自動配置システムの変遷

①時間でランダム配置
②左右対称に配置
③重ならないように配置
④上下左右に対称に配置
シンメトリでBlockTennis

次回は、ボールの通り道を作る

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

この記事が参加している募集