2016-04-25 9 views
0

私は自動実行プラットフォームゲームを構築しています。キャラクターが壁に衝突した場合、壁を越えることができるまで、キャラクターが押し戻されるようにコードがあります。残念ながら、これは、キャラクターがオブジェクトにジャンプしようとすると、彼はちょうど後方に押し戻されることを意味します。キャラクターがオブジェクトの上に横たわっているときから、それがどのようにオブジェクトの上にあるのかを見分けるにはどうすればいいですか?オブジェクトが別のオブジェクトの上にあるかどうかを検出するには(レンガのマリオのように)

私の現在のアルゴリズム(Cっぽい私はCっぽい構文を好きなので):

if (wall.Top < (character.Top + character.Height) && 
    wall.Left < (character.Left + character.Width) && 
    (wall.Top + wall.Height) > character.Top && 
    (wall.Left + wall.Width) > character.Left) { #code here# } 

答えて

1

4つの条件があまりにもここにあります。キャラクターの高さと壁の高さに応じて、第1と第2の条件は実際にあなたのキャラクターが壁にある場合を排除します。その中心底が壁の上にある場合は、文字が壁の上にあることを考慮し、次の操作を行うことができると仮定すると、

character.Center = character.Left + character.Width/2; 
if (character.Center > wall.Left && 
    character.Center < wall.Left + wall.Width && 
    character.Top - character.Height > wall.Top) { ... } 
+0

はどうもありがとうございました。) –

関連する問題