クォータービュー表示ロジック(3)
検索して発見した。これはすごい。
- http://d.hatena.ne.jp/yaneurao/20041002
- http://d.hatena.ne.jp/yaneurao/20041003
- http://d.hatena.ne.jp/yaneurao/20041006
- http://d.hatena.ne.jp/yaneurao/20041007
- http://d.hatena.ne.jp/yaneurao/20041008
記事が古くなっているせいか、一部の図が見れない気がするが、非常に参考になる。
要は、以下のような重なりパターンの検出/対応ができなくては、真に正しくクォータービューを表示できるアルゴリズムではない、という事らしい。
- http://d.hatena.ne.jp/images/diary/y/yaneurao/2004-10-08.gif
- 普通にブロック単位で置いているだけなら、この構造になる事は無いが、複数のキャラクタがなめらかに移動する場合は、途中でこの構造になるパターンがありうる(つまり、元記事中で言われている「座標値がブロック単位の整数ではなくなる」場合)。
で、それを検出/解決するには、以下のようにする必要があるようだ。
- http://d.hatena.ne.jp/yaneurao/20041008#c1097181290
- http://d.hatena.ne.jp/yaneurao/20041016
- http://homepage.mac.com/holythunderforce/threeConflict.html
3すくみを検出してしまった時の対応をどうするかについては迷うところだが、それ以外についてはこのアルゴリズムで適切に機能するように思える。
「あるブロックが他のブロックを隠してしまわないかどうか」と「カメラ視界(というかディスプレイ表示域)にブロックが存在するかどうか」の検出方法が表裏になってるのも面白い。
今日の結論: 昔の人は偉大だった。