何か、こういうことを書いてあるページはないかなーと思い、
いろいろあさってみたところ、3Dについてのことがたくさん書かれている
ページがあったので、それを読んでみました(devilmanさんのページです)。
「ふぅん、座標系かぁ。こういう考え方もあるんだなぁ」
と、まず思いました。んで、自分の作ったゲームには
いわゆる「ワールド座標系」と
「カメラ座標系」しかないのか、と思いました。
「何それ」
という方は、devilmanさんのページにて(ごめん、アドレスわからん)。
各キャラクタの位置はワールド座標系、ディスプレーに表示するときは、
カメラ座標系に変換して出力していたわけですね。
多分、スクロールのまったくないゲームには、カメラ座標系はいりません。
だって、カメラの位置が固定だもん(^^;)
よくあることですが、話がちょっとずれました。
そして、新しい「考え方」にヒントを与えてくれたのが、
「オブジェクトの階層構造
副題:親の因果が子に報い」
というコラム(tips?)でした。
・スーパークラスに「親」というメンバを加える。
・「親」がNULLの場合、「自分」の移動のみとする。
・「親」がNULLでない場合、さきほどの「子の位置 = 親の移動 + 子の移動」
を用いて、位置を算出する。
・「ワールド座標系」を用いず、「オブジェクト座標系」を用いる。
「親」がNULLでなくなったとき、「親との距離」を計算し、
それを「自分の位置」とする。また、自分が移動すれば「親との距離」を再計算する。
そして、「親の原点」に「親との距離」を加えて、それを「自分の位置」とする。
こんな感じです(^^;。
わかりにくい文章なので、あまり伝わらないと思います(^^;
が、僕の中ではかなり出来てるつもりです....。
とりあえず、これで「移動」については終わりました(え?)。
あとは、あたり判定です。
「長方形」を使うか、「線分」を使うか....。
そこが問題です。