3

私はactionscript3.0を使用して簡単なPK戦ゲームを実装しています。ゲームのビューは、古い「SensibleWorldofSoccer」のビューに似ています。より良い衝突検出(応答結果)を達成するために役立つと思うので、ディメンションzを使用して3Dゲームロジックを使用したいと思います。ただし、グラフィックのスタイルとビューは古い2Dサッカーと同等のままにしておきたいと思います。したがって、正投影はこの実装に適していると思います。インターネットには正投影に関する情報がたくさんありますが、誰かが自分のコードにそれをどのように適用できるかについて少し混乱しています。

だから私の質問は:

  • 正射影で誰かが3d(x、y、z)点を2d(x'、y')点に変換するための手順はどれですか?
  • 行列の使用を避けることはできますか?はいの場合、座標x'、y'をx、y、zに関連付ける方程式は何ですか?
  • 変換を適用する前に、カメラの位置と角度を定義する必要がありますか?私の場合、カメラは固定された位置と角度になります。
4

1 に答える 1

1

DisplayObjects とその子孫 (つまり、MovieClip と Sprite) には、頭を悩ますことなくこれを行うために使用できる az プロパティがあります。また、rotationX/Y/Z および scaleX/Y/Z プロパティもあります。

'z' を使用すると、それに応じてオブジェクトの位置とスケールが調整されます (ただし、ベクトルはビットマップに変換されます)。深度の並べ替えがないため、z 座標がオブジェクトの背後にある必要があることを示唆している場合でも、オブジェクトの上に留まります。 、しかし、あなたが念頭に置いているプロジェクトでは、これが問題であることはわかりません-とにかく修正するのは非常に簡単で、シーンにオブジェクトの配列を持ち、z位置に従って並べ替え、各/の深度インデックスをリセットしますソート順にステージに再追加します。

クリップのperspectiveProjectionメンバーを使用して、FOV、原点などを調整できます-

パースペクティブ チュートリアル

..しかし、それ以上に洗練する必要はありません。確かに、実験としてこれを手動で計算したい場合でも、固定カメラ ビューの行列をいじる必要はありません。

お役に立てれば

于 2013-03-28T18:14:00.220 に答える