キャラクターが無限のランナー/ジャンパーのギャップに落ちたかどうかを判断する方法は?


12

2D無限ランナーを構築しています。ゲームでは、キャラクターが柱から柱へジャンプし、柱がランダムに生成されます。これは機能しています。しかし、キャラクターが柱にジャンプできず、柱の間の隙間に落ちたかどうかを判断する方法は?柱は普通の長方形です。


OT:この質問はrpg.SEに投稿されましたが、「現在どのようなルールエクスプロイトが見つかっていますか?無限に実行されている方法は?」
o0 '。

回答:


20

プラットフォームの最小許容高さより低い、レベルの下部に長方形の領域を追加します。プレーヤーがこの領域と交差している場合、プラットフォームから落ちています。


1
そして、この長方形をカメラの子にして、カメラとともに移動し、常に存在するようにしますか?それはとても簡単です。ありがとう。
サンソロ

プレイヤーがレベルを超えて落ちることができなくても、どうにかして彼が何らかの形でうまくいけば、これは良い安全策だと思います。
ムカホ

5
文字通り交差点をチェックする場合は、キャラクターがサーフェスをすり抜けるほど速く落ちないようにしてください(つまり、キャラクターの完全に上から、次のフレームから完全に下まで)。
-wchargin

2
はい、これを回避するために、長方形は必要な範囲まで拡張する必要があります。また、高さをチェックするだけで機能しますが、これにより、レベルに応じて「キル領域」のサイズを柔軟に変更できます。
mklingen

6
長方形の「クリッピング」を回避するために、単純ではないのはなぜif (playerPos.x < minHeight)ですか?
コールジョンソン

24

ゲームが水平方向にのみスクロールする場合、キャラクターの垂直位置がステージの下端より下にあるかどうかを確認できます。

ゲームが垂直方向(おそらく上方向)にスクロールする場合、プレイヤーがビューの下端(画面上のステージの領域、またはカメラの焦点)の下に落ちているかどうかを確認できます。

一般に、死の状態は、キャラクターが「カメラ内」に留まらない場合です。カメラの動きを制御することで、ゲームプレイを調整できます。たとえば、垂直スクロールステージでカメラを「下方向」に少しだけ「ラバーバンド」させるだけで、上向きの動きを完全に許可すると、画面外の深い位置にペナルティが科せられます。


はい、それも簡単な方法です。キャラクターができる最低の位置を見つける必要があります。
サンソロ

1
正しい!水平スクロールの場合、マップエディターでステージの垂直サイズを確認するだけです。垂直スクローラーの場合、カメラが上方向にのみ移動することを確認できます。そうすれば、キャラクターが倒れた場合、彼はカメラのビューの下に落ちてしまいます。次に、キャラクターの垂直位置がビューの下部境界を下回るかどうかを簡単に確認できます。
ジェルヴァンカンペン

@JellevanCampen:カメラを必ずしも上向きの動きに制限する必要はありません。「カメラに」とどまることに失敗したキャラクターを殺したり、カメラにそれらを追ってもらうことができます。
Mooingダック

この答えは、カメラをレベル境界に直接結び付けるため、あまり好きではありません。mklingenの答えは、レベルの境界が複数の画面高さのサイズであっても機能します。カメラは上下に移動してキャラクターに焦点を合わせることができますが、キャラクターがカメラよりも速く落下し、レベルにとどまるが、カメラに直接接続された境界ボックスと衝突するリスクはありません。
ケビン

2
@Kevin:一般的なゲームには同意しますが、手続き的に生成された無限のスクローラーには同意しません。たとえば、垂直スクローラーでは、新しいボックスの生成を継続し、画面外のボックスの生成を継続するか、カメラの動きに合わせてボックスを更新し続ける必要があります。死の状態は「カメラにとどまらない」ことに直接関係しているため、その状態をカメラに結び付けることは理にかなっています。また、新しいオブジェクトを生成して衝突チェックに頼るよりも、カメラの境界チェックを行う方がパフォーマンスが向上します。
ジェルヴァンキャンペン

2

垂直座標を確認する代わりに、垂直速度を確認することもできます。キャラクターが何らかの閾値よりも速く落ちている場合、それらは死んでいると結論付けます(まだ到達するのに十分な低いプラットフォームある場合でも、影響は致命的です)。

もちろん、これはゲームが基本的な自由落下物理学を適切に実装している場合にのみ機能します。つまり、実際には(最終速度まで)落下中に下降速度が実際に増加します。


1

柱の高さがある場合、最も低い既存のものを見つけて、プレーヤーの垂直位置と比較できます。彼が最も低い柱の下にいる場合、彼が戻ることができる可能性はありません。このチェックは、プレイヤーの後ろと前の柱のみに制限できます。

例:高さ[10、20、40]の3本の柱があります。ジャンプしたプレイヤーは高さ40の柱の上にあり、20にジャンプします。彼は40と20の間のギャップを感じました。彼は現在高さ15にいます。より厳密でないチェックのために、彼が10未満になるまで待ちます。


すべての柱は同じサイズです。異なるのは2本の柱の間の水平方向のギャップです。)
サンソロ

0

キャラクターが落ちた時間を数えます。(つまり、どれだけ「下に」移動しているか)。彼らが一画面よりも多くの時間を費やした後、彼らは当然のことながらステージから落ちましたね?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.