私は楽しくゲームをプログラミングしていますし、CとGBAモード3についてよく知っています。でも、私は問題にぶつかりました。2つの2Dオブジェクトの衝突ごとに1つのライフを削除するにはどうすればよいですか?
私はこれら2つのブロックを画面に表示しています.1人は良い人、もう1人は悪い人です。良い男が悪い男と衝突して、人生を取り除くはずだ。問題の出番つまり
私はゲームを実行whileループ内にこれを持っている:。
if (plyr_row < enemy_row + enemy_size && plyr_ row
+ plyr_size > enemy_row && plyr_col < enemy_col + enemy_size
&& plyr_size + plyr_col > enemy_col)
{
lives--;
}
命がダウンして行くのですが、プレイヤーが作っている間の生活の多くを奪われ敵との接触。言い換えれば、接触中に、人生は本当に速く落ち、衝突するたびに人生を取り除きたいのですが、どうすれば達成できますか?
質問に答えが暗黙のうちではありませんか?あなたは1回の衝突につき1人の命を控除したいだけです。したがって、衝突の開始と終了を検出します。つまり、プレイヤーが敵のヒットボックスに入ったときと終了したときを検出し、1回の衝突当たりのライフを1回だけ差し引くようにします。それによると、ほとんどのゲームでは、プレイヤーは衝突サイトから離れて再発動し、これは問題ではありません。 –
標準的な解決策は、損傷を受けた後に脆弱な期間を持つことです(しばしばスプライトが点滅する)。 –
のように見えるコードは、プレイヤーごとに1回以上のチェックを行っているようです。 – user3629249