アクションゲーム制作で詰まりました
Posted: 2020年10月11日(日) 00:22
こんばんわ。
現在、スマホのアクションゲームを製作しております。
敵の落下判定をさせるため、敵が床に当たっているかどうかという当たり判定を付けたいのですが、処理が重くなってしまい、参っています。セルを実装し、二次元配列を使用し、以下のようにしていますが、この方針でそもそも大丈夫でしょうか?
-----------------------------------------[現在の大まかなやり方]--------------------------------------------
セルのx,y方向の大きさを決め、二次元配列のフィールドを作り、敵にセル情報をもたせる。しかし、敵が少しだけ動いた場合、セルが一つだけだと、そのセルからずれてしまい、当たっているのに当たっていないといった事が起きるため、敵の基本のセルから以下の図のように、8方向にもセルを持たせる。
■ ■ ■
■ □ ■
■ ■ ■
また、敵が1セルより大きい場合に困ってしまうため、予め画像サイズを取得し、そのサイズを見て割り当てるセルを増やすようにする。
if(sizex <= cellsize_x && sizey <= cellsize_y) else if(sizex <= cellsize_x * 2 && sizey <= cellsize_y * 2)
■ ■ ■ ■ ■ ■ ■
■ □ ■ ■ □ □ ■
■ ■ ■ ■ □ □ ■
■ ■ ■ ■
(これを、プレイヤー、敵、足場 にそれぞれに保有させる)
そして、このセルがフィールドのどこにあるか?という情報を、フィールド二次元配列の対応した場所に持たせ、もし敵のセルの位置のフィールドセルに足場のセル情報が入っていた場合、そこで当たり判定処理を別の処理で行う。(セルの一致は当たり判定処理をするための条件)
(当たり判定処理は、x,y座標で左上と右下の座標を使い、四角の判定で当たり判定処理をしています)
-----------------------------------------------------------------------------------------------------------------
このような感じなのですが、敵が密集した場合、動作が重くなってしまいます。
大型の敵なら5体もいればカクカクです・・
もしかしたら、方針は合っていて、どこかの処理が甘いだけなのかもしれないのですが、なかなか見つけられずにいて悩んでいたため、一度、此方の掲示板で、皆様のご意見をお聞きしたいと考えた次第です。
宜しくお願いいたします。
現在、スマホのアクションゲームを製作しております。
敵の落下判定をさせるため、敵が床に当たっているかどうかという当たり判定を付けたいのですが、処理が重くなってしまい、参っています。セルを実装し、二次元配列を使用し、以下のようにしていますが、この方針でそもそも大丈夫でしょうか?
-----------------------------------------[現在の大まかなやり方]--------------------------------------------
セルのx,y方向の大きさを決め、二次元配列のフィールドを作り、敵にセル情報をもたせる。しかし、敵が少しだけ動いた場合、セルが一つだけだと、そのセルからずれてしまい、当たっているのに当たっていないといった事が起きるため、敵の基本のセルから以下の図のように、8方向にもセルを持たせる。
■ ■ ■
■ □ ■
■ ■ ■
また、敵が1セルより大きい場合に困ってしまうため、予め画像サイズを取得し、そのサイズを見て割り当てるセルを増やすようにする。
if(sizex <= cellsize_x && sizey <= cellsize_y) else if(sizex <= cellsize_x * 2 && sizey <= cellsize_y * 2)
■ ■ ■ ■ ■ ■ ■
■ □ ■ ■ □ □ ■
■ ■ ■ ■ □ □ ■
■ ■ ■ ■
(これを、プレイヤー、敵、足場 にそれぞれに保有させる)
そして、このセルがフィールドのどこにあるか?という情報を、フィールド二次元配列の対応した場所に持たせ、もし敵のセルの位置のフィールドセルに足場のセル情報が入っていた場合、そこで当たり判定処理を別の処理で行う。(セルの一致は当たり判定処理をするための条件)
(当たり判定処理は、x,y座標で左上と右下の座標を使い、四角の判定で当たり判定処理をしています)
-----------------------------------------------------------------------------------------------------------------
このような感じなのですが、敵が密集した場合、動作が重くなってしまいます。
大型の敵なら5体もいればカクカクです・・
もしかしたら、方針は合っていて、どこかの処理が甘いだけなのかもしれないのですが、なかなか見つけられずにいて悩んでいたため、一度、此方の掲示板で、皆様のご意見をお聞きしたいと考えた次第です。
宜しくお願いいたします。