再び失礼致します。
前回同様SLGでの質問なのですが、モーションの再描画についてです。
現在の描画方法はY軸を0から始め、for文によって順々にマップの値によって描画していっております。
その座標にキャラが居れば、キャラ描画関数へ座標を送り描画といった形です。
この状態で移動モーションに取り掛かっていたのですが、現在↑の作業を終えた後に移動モーションを描画してしまってます。
そのため移動しているキャラだけ他の何よりも手前に表示されてしまい、段差など色々とおかしな表示となってしまいました。
これの対策として移動中のキャラよりも座標として下に位置しているものをモーション中に再描画していくという形で対応しました。
これによりわずかな違和感はあるものの、何とかなっていました。
しかし現在攻撃モーション実装に伴って、この方法ではやはり不味いなと思い至りました。
というのも攻撃の際、攻撃側、被弾側、投擲物(無い場合もありますが)の三種のモーションを取り入れなくてはならないため、上記の再描画方式ではいささか無理があるような気がしています。
それでも三種の座標一番上の物から再描画 二番目のモーションを描画後、その座標位置から再描画 ry と力技でごり押すことも出来そうではありますが・・・、今後を考えるとやはりこの描画方法はソースコードの無駄に他ならないと思います。
そこで一般的にSLGのモーション描画の仕組みはどのようになっているのかご存知の方いらっしゃれば教えて頂けると助かりますm(_ _)m
モーションの再描画
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: モーションの再描画
モーション・移動・当たり判定などの処理は描画と分離して先に処理して下さい。
最後にまとめてマップ・キャラ・エフェクトを奥から順番に描画するのが定番です。
[追記]
定番の書き方については
「新・C言語 ~ゲームプログラミングの館~ [DXライブラリ]」
http://dixq.net/g/
で色々と説明されています。
d.1 メイン関数の作り方
d.2 複数のファイルにわけてコンパイルする
d.3 ゲームの設計と分割コンパイル(1)
d.4 ゲームの設計と分割コンパイル(2)
d.5 ゲームの設計と分割コンパイル(3)
最後にまとめてマップ・キャラ・エフェクトを奥から順番に描画するのが定番です。
[追記]
定番の書き方については
「新・C言語 ~ゲームプログラミングの館~ [DXライブラリ]」
http://dixq.net/g/
で色々と説明されています。
d.1 メイン関数の作り方
d.2 複数のファイルにわけてコンパイルする
d.3 ゲームの設計と分割コンパイル(1)
d.4 ゲームの設計と分割コンパイル(2)
d.5 ゲームの設計と分割コンパイル(3)
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
-
コレジャナイ
Re: モーションの再描画
>>ソフト屋さん
失礼致しました。
こちら側の説明不足です。
関数自体はMapとDrawで分けております。
もう覚えてらっしゃらないかもしれませんが、かなり前に分割の重要性を教えて頂いたので感謝しております。
奥から描画という事はやはり移動の際はキャラ描画の段階で座標をずらしていかないと不味いという事ですね・・・。
これは完全に最初の設計を失敗してしまいました・・・。
これ以上教えて頂く事は難しそうなので、一旦これで解決とさせて頂きます。
失礼致しました。
こちら側の説明不足です。
関数自体はMapとDrawで分けております。
もう覚えてらっしゃらないかもしれませんが、かなり前に分割の重要性を教えて頂いたので感謝しております。
奥から描画という事はやはり移動の際はキャラ描画の段階で座標をずらしていかないと不味いという事ですね・・・。
これは完全に最初の設計を失敗してしまいました・・・。
これ以上教えて頂く事は難しそうなので、一旦これで解決とさせて頂きます。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: モーションの再描画
>奥から描画という事はやはり移動の際はキャラ描画の段階で座標をずらしていかないと不味いという事ですね・・・。
と言うより計算の段階でモーションや座標や描画順番まで決めてしまうべきです。
描画は描画順番に描画するだけという鉄則を守っていれば問題は起きないはずです。
と言うより計算の段階でモーションや座標や描画順番まで決めてしまうべきです。
描画は描画順番に描画するだけという鉄則を守っていれば問題は起きないはずです。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。