2016-08-31 15 views
-1

私はHTML5 Canvasでプラットフォームゲームを作っています。私はまだ主人公がいないので、私は今ボールを使用しています。ボールが草のブロックを通過できないようにしています。私はマップの値を保持するためにリストを使用していますが、2つのif文を使ってリストの値をマップに変換するので、ボールと芝生のボールの衝突を検出する方法はわかりません。地図上のどこにでも置くことができます。オブジェクトの衝突HTML5 Canvas

私の質問は、ボールと芝生のブロックをハードコーディングせずにどうやって衝突させることができますか?速くする必要があります。ライブラリが必要な場合は、状況。

私のコードはここにある:https://drive.google.com/open?id=0B7OJnVpBNrkDTlA0amdzMkdrRnM

+0

基本的には、ゲームの実行中に自分自身を打つかどうかを確認する必要があります – Hydro

+0

ゲームエンジンを使用することをお勧めします:https://html5gameengine.com/ –

+0

あなた自身の衝突システムを構築する必要があります。数学のビット、しかしあまりにも難しくない)、または既存のゲームエンジンを使用します。いくつかの良いものが浮かんでいます。あなたが提供できるものを利用したいと思っているだけでなく、衝突するよりも多くを扱う "Phaser"を見てください。 – DBS

答えて

0

ここでは、上に構築することができ、そこから自分の問題への基本的な解決策は、です:要約する

https://plnkr.co/edit/5c08NrVQh44hsq1BFX9X?p=preview

  • 私はと呼ばれる新しい多次元配列を作成し、ボールは缶が移動できない。
  • どのタイルが現在ボールを覆っているかを確認するために、私はあなたがすでに持っていた(コメントアウトした)値ballLocationColballLocationRowを使用しました。
  • 新しいcanMoveHere機能を使って、ボールが現在のタイルの上を通過できるかどうかと、そうでない場合は逆の方向をチェックします。

N.B. 学習のためだけにこのプロジェクトを開始している場合は、必ず衝突検出のコードを自分で記述してください。しかし、そうでない場合は、いくつかのコメント者が既に提案しているように、ゲームエンジンを使用する方が生産性が高いと思われます。

+0

私はそれが私と何であるか知りませんが、私はそうしなければならないときにライブラリを使用したくないのです。しかし、私はこれがうまくいくと思います。私はマップを作成するために二重配列を使用していましたが、私が取っていたクラスのために単一の配列を使い始めました。 – Jordan

関連する問題