1

Crafty.jsゲーム エンジンをいじっています。プレーヤーがボールであり、プラットフォームにドロップダウンする小さなゲームがあります。次のプラットフォームにぶつかるたびに、彼はポイントを獲得します。スコアは変数として保存され、画面に表示されます。Crafty の衝突検出を使用して、プレイヤーが新しいプラットフォームにぶつかったことを検出しています。Crafty に慣れていない場合は、非常に単純です。プレーヤーが新しいプラットフォームにアクセスするたびに、イベントが発生し、スコアに 1 つ追加できます。

私の問題: ゲームは約 60fps で実行されます。キャンバスがリロードされるたびに、Crafty はプレイヤーが実際にプラットフォームに触れているかどうかを検出します。これにより、スコア変数は、プレイヤーがレベルに触れるたびに 1 フレームずつ増加します。これは私が望むものとはかけ離れています。スコアをプラットフォームごとに 1 回インクリメントしたい。これは私が修正する方法がわからない問題です。

私が解決しようとしたその他のこと: また、プレーヤーが開始点から離れている距離を常に測定することも検討しました。これにより、プレーヤーがどのプラットフォーム上にいるかを (除算によって) 知ることができます (プラットフォームは垂直方向に等間隔に配置されているため)。これは問題でしたが、Crafty がプレイヤーの現在の位置を教えてくれなかったためです。

うまくいくと思うこと:プレイヤーが各プラットフォームにヒットする最初のフレームでイベントを発生させることができれば、うまくいくと思います。(補足: プレイヤーが 1 つのプラットフォームにとどまり、ジャンプして同じプラットフォームに 2 度目に着地した場合、追加されるポイントは 1 つだけです。ダブル ジャンプではありません)

皆さんからのお願い:この問題に遭遇したことがありますか? 私は本当にこのゲームを終わらせる必要があります。そして、このマイナーな技術的問題により、私はそれを完成させることができません。誰かの入力が欲しいです。

4

2 に答える 2

0

最も簡単な解決策は、プレーヤーがそのプラットフォームに着陸したかどうかを追跡する変数をプラットフォームごとに設定することです。次に、まだ着地していないプラットフォームにボールが接触するたびに、ポイントを与え、そのプラットフォームを着地したものとしてマークします。

プラットフォームが連続している場合は、プレーヤーが使用しているプラ​​ットフォームを追跡する単一の整数変数を使用することもできます。

于 2013-08-15T21:40:06.583 に答える