スーパーマリオのようなアクションゲームを制作している者です。
今回は、ダンジョン中の処理の流れについてアドバイスをお願いします。
私が最初に考えたのは
・プレーヤーの移動処理
・敵の移動処理
・トラップの処理
・地形との当たり判定による座標の補正
・敵キャラとの当たり判定による座標の補正
・マップの描写
・トラップの描写
・敵の描写
・プレーヤーの描写
・画面の適応 (ダブルバッファリングを使っています)
・画面の消去
・待機 (fpsの調整のため)
という流れです。
これだと、当たり判定が2回出てくるのでしょうがないとはいえ、
効率のよい設計とは言えないと思います。
なので、より効率のよい設計があれば教えて下さい。
アクションゲームの処理の流れについて
Re: アクションゲームの処理の流れについて
なぜ効率の良い設計でないと思ったのでしょうか。
Re: アクションゲームの処理の流れについて
すいません、もう少し詳しく書くと
・キー入力を受け付けて、プレーヤーの座標をいじる
・プレーヤーの体の四隅の座標を取得する
・体の四隅が壁などに触れているかどうかを判定する
・プレーヤーの座標を調節する
・もう一度 プレーヤーの体の四隅の座標を取得する
・体が敵キャラと触れているかどうかを判定する
・プレーヤーの座標を調節する
・また プレーヤーの体の四隅の座標を取得する
・プレーヤーがトゲなどのトラップに触れているどうかを判定する
・プレーヤーの座標を調節する
このように無駄に当たり判定が多い設計になっております。
私はこのような設計になったのですが、
他の方はどのようにしているのかが気になっていたわけです。
・キー入力を受け付けて、プレーヤーの座標をいじる
・プレーヤーの体の四隅の座標を取得する
・体の四隅が壁などに触れているかどうかを判定する
・プレーヤーの座標を調節する
・もう一度 プレーヤーの体の四隅の座標を取得する
・体が敵キャラと触れているかどうかを判定する
・プレーヤーの座標を調節する
・また プレーヤーの体の四隅の座標を取得する
・プレーヤーがトゲなどのトラップに触れているどうかを判定する
・プレーヤーの座標を調節する
このように無駄に当たり判定が多い設計になっております。
私はこのような設計になったのですが、
他の方はどのようにしているのかが気になっていたわけです。
Re: アクションゲームの処理の流れについて
プレイヤーと干渉するオブジェクトに対しては、当たり判定を行わないといけないので無駄でもなんでもないと思いますが。
Re: アクションゲームの処理の流れについて
ありがとうございます。
最近もっと短く簡潔にコードを書くようにしようと思い、
気にしすぎていました。
最近もっと短く簡潔にコードを書くようにしようと思い、
気にしすぎていました。
Re: アクションゲームの処理の流れについて
プレイヤーキャラ「が」他のオブジェクトに干渉しているかというふうだと、他のオブジェクトら自身の更新とループ処理がダブるのが無駄かもしれません。
他のオブジェクトのほうが圧倒的に数が多いので、それぞれの更新処理において、プレイヤーキャラとの干渉具合をチェックして、RECT(的な)構造体に補正[必要&限界]距離を蓄積、次のプレイヤーキャラの更新処理で補正、というふうにするとループ処理(というかプログラムの構造そのもの)をすっきりさせることができます。
他のオブジェクトのほうが圧倒的に数が多いので、それぞれの更新処理において、プレイヤーキャラとの干渉具合をチェックして、RECT(的な)構造体に補正[必要&限界]距離を蓄積、次のプレイヤーキャラの更新処理で補正、というふうにするとループ処理(というかプログラムの構造そのもの)をすっきりさせることができます。