描画順について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
クロウ

描画順について

#1

投稿記事 by クロウ » 15年前

トピックが流れてしまったようなのでもう一度立てさせていただきます。

以前の質問でマップチップを並べることはできたのですが、今度はキャラクターとマップチップとの描画順位でつまずいています。

段差があって、マップの高さがある場合、キャラがマップの後ろに隠れたりしないで、段差の上に描画されてしまいます。

今は一列ずつ判定してそこにあるマップチップやキャラなどを一斉に描画しているという方法をとっているつもりですが、重なったり重ならなかったりで上手くいきませんでした。

クォータービューのマップで段差がある場合、キャラが重ならないで描画する方法を教えてください。


使用環境はXPのVisual C++でDxライブラリを使っています。

SooA

Re:描画順について

#2

投稿記事 by SooA » 15年前

言葉で説明するのに良い表現を思いつかなかったので
サンプルを作ってみました。

簡略化した形で一から書いているので
そのままは使えませんが、
意図するところは解って貰えるかなと思います。

要はどの段階でキャラクターを描画するかです。

クロウ

Re:描画順について

#3

投稿記事 by クロウ » 15年前

返信ありがとうございます。
静止状態では上手くいきました。
ですが、キャラを動かしてみると、前のマップチップに埋もれてしまいます。
移動中はif(tMob.x == x && tMob.y == y)をいじって描画順位を一つ上げるようにしてみましたが、移動先の周囲に段差があると、今度は隠れなくなったり、マップの端に付くと、描画しなくなってしまっています。

これを直そうとすると、例外処理が大量に発生しそうなので、なんとか例外処理をしないですむ方法はないでしょうか?

SooA

Re:描画順について

#4

投稿記事 by SooA » 15年前

サンプルはキャラクターより奥にあるタイルを
先に描画するという事だけを伝えるための
ものでしたので実際に使うにはふさわしくありません。
すみません、少々配慮が足りませんでした。

基本的にはキャラクターより下、
または奥にあるタイルを先に描画するのですが、
画像を見てタイルを描画していく状態を
思い浮かべてみてください。

1→2→3...と描画したとして、
キャラクターよりも後に1に高さのあるタイルを描画すると
キャラ頭部が消えてしまいます。
6や8のタイルをキャラより後に描画すると
移動させた時に移動した部分が消えます。(サンプルはこの状態ですね。)

つまり地面となるタイルと奥にある高さのある
タイルは先に描画しておかなければ
ならない事になります。


1、地面部分の描画
2、キャラクターのまたがるタイルの取得
  移動させる場合A地点とB地点の二つ以上のタイルを
  またぐことになります。
3、高さを持つタイルに2で取得した
  タイルに対する優先順位を付ける。
4、優先順位に沿ってキャラクターと残りのタイルを描画

SooA

Re:描画順について

#5

投稿記事 by SooA » 15年前

サンプルをUPしてましたが、
混乱する内容だったので削除しました。

クロウ

Re:描画順について

#6

投稿記事 by クロウ » 15年前

また質問させていただくかもしれませんが、
アドバイスを参考にもう少し考えてみようと思います。

ありがとうございました。

閉鎖

“C言語何でも質問掲示板” へ戻る