私は 2D プラットフォーム ゲームに取り組んでおり、表面 (衝突) 検出を実装するための (パフォーマンス面での) 最善の方法は何かと考えていました。
これまでのところ、線のリストで構成されたレベル オブジェクトのリストを作成することを考えており、線に沿ってタイルを描画しています。
代替テキスト http://img375.imageshack.us/img375/1704/lines.png
上り坂/下り坂を歩いているときにyの位置を簡単に操作するために、すべてのオブジェクトが彼が歩く表面のIDを保持していると思います。
このようなもの:
//Player/MovableObject class
MoveLeft()
{
this.Position.Y = Helper.GetSurfaceById(this.SurfaceId).GetYWhenXIs(this.Position.X)
}
したがって、「水面での落下/歩行」を検出するために私が使用するロジックは、単純なポイント (プレーヤーの下肢) - タッチ - ライン (表面) のチェックです (いくつかの安全な概算を使用して - ラインから 1 ~ 2 ピクセルとしましょう)。
このアプローチは大丈夫ですか?この問題に関する読み物を見つけるのに苦労しているので、遠慮なくリンクやアドバイスをドロップしてください。