現在、c++でクラスを作りながらゲームを制作しております。
プレイヤーのクラスを作り、そこへゲーム中の挙動などを記述するといった具合です。
そこでですが、タイトル画面でプレイヤーを表示するとなった場合、タイトル専用のプレイヤークラスをまた新しく作るほうがよいのでしょうか?
最初に述べたプレイヤークラスに、条件式を使って「タイトルならこの挙動をする、ゲームならこの挙動」と制御してやってもいいのですが、少し不細工だと思いまして・・・。
ちなみにそのタイトルでの挙動ですが、ゲームとは全く異なる挙動です。
皆さんなら、どう設計しますか?
タイトル画面のプレイヤーのクラス設計について
Re: タイトル画面のプレイヤーのクラス設計について
挙動という言葉をどういう意味で使っていますか?ちなみにそのタイトルでの挙動ですが、ゲームとは全く異なる挙動です。
実際のプレイと全く違うならば、もうムービーでもいいような気がします。
それとも、コントローラーの入力ではない方法で制御される ということを言っていますか?
(マリオワールドの最初のデモみたいな)
下記は、タイトル画面ではデモプレイとして自動でプレイヤーに動いてほしいということだったとしたら、の私のやり方です。
私の本職ではないし、色々足らない部分はあるので、方針として考えてください。
聞きたいことと見当違いなものであればごめんなさいね。
[hr]
タイトルだろうと実際のプレイだろうとプレイヤーは同じで作ります。
ただし、初期化時に渡すものを変えます。
キャラクター関連のクラスは初期化時に、キャラクターの操作用のインスタンスを受け取るようにします。
キャラクターはタイトルであろうとそうでなかろうと、受け取った操作用インスタンスから、
現在どんな操作がなされているのかを受取り、それに合わせて動きます。
最初に受け取った操作インスタンスに対して、「今どんな操作ですかメソッド」で尋ねると
「ジャンプ操作されましたよEnum値」みたいなものが返ってくるわけです。
これで、どのような方法・状況で操作されているか、というような分岐を作る必要はなくなります。
操作用クラスは、何らかの入力を操作に変換しておき、聞かれたら答える という感じで実装します。
キーボードから読み込んで操作に変換すれば、実際のプレイヤー用になるでしょうし、
操作を記録したファイルから読み込んで操作とするようにすれば、デモが作れるでしょう。
キャラクタークラス + キーボード操作クラス = 実際のプレイ用プレイヤー
キャラクタークラス + ファイルからの操作クラス = デモ用のプレイヤー
のようになりますね。
シューティングのリプレイや、RPGの村人のような動作もファイルからの操作のようなやり方でできるでしょう。
ただし、プレイヤーの位置によっって動きを変える敵AI のようなものにはまだ工夫が必要です。
Re: タイトル画面のプレイヤーのクラス設計について
hideさん
なるほど、そのような手が・・・
つまり、プレイヤーの更新処理には、直接キー操作の処理は書かないというわけですね。
操作クラスに聞くことで自分がどんな挙動をするかが変わると。
ありがとうございます。とりあえずこれでやってみます。
なるほど、そのような手が・・・
つまり、プレイヤーの更新処理には、直接キー操作の処理は書かないというわけですね。
操作クラスに聞くことで自分がどんな挙動をするかが変わると。
ありがとうございます。とりあえずこれでやってみます。