2012-02-16 3 views
2

jQueryでピンポンのゲームを作ろうとしていて、どのようにしてコンテナ内のスライダの位置を制限できますか?jQuery:オブジェクトのkeydownの動きを制限する

また、ボール/ボックスを生成する方法と、ボール/ボックスをコンテナの側面と上部の壁にバウンスさせる方法についてのヘルプも必要です。

私はそれに取り組んできましたが、私はまだコンテナの内側にスライダを保持し、ボールをバウンドすることに苦労しています。

ご協力いただければ幸いです。 MyCodeSoFar

+0

私はプレートを見ることはできますが、ボールは見ることができません。私はあなたのプレートが0または幅を超えてはならないと思う... – sinsedrix

+0

@sinsedrixここでコードの新しいバージョンを見ることができます[jsfiddle.net/vchouhan/TPZtP/5/]。どんな助けも高く評価されるでしょう! – Vish

答えて

1

申し訳ありませんが、あなたのコードはちょっと面倒です。どんなものでも、ゲームのようなjsポンというこのアイデアを見つけました。私はあなたのコードをあなたが意図したとおりに修正しました。

this fiddleをご覧になり、私にいくつかのフィードバックをお寄せください。

+0

質問にお答えしてくれてありがとう!私はあなたのコードをテストし、それは素晴らしい動作します!いくつかの小さなバグを除いて。ボールはプレートの跳ね返りません!それは壁のバウンス!私はボールの速さについてはわかりませんが、時間とともに増加しますか? – Vish

1

多くの一般的な質問がありましたので、いくつかの一般的な情報をお伝えします。 :)

私はjQueryでピンポンのゲームを作ろうとしていますが、どのようにしてコンテナ内のスライダの位置を制限できますか?

パドルを拘束するには、いくつかのオフセットを確認してください。

左の境界線に接触しているかどうかを確認するには、左からオフセットを確認します。 0の場合は、のkeydownは無視してください。

右の境界線に接触しているかどうかを判断するには、左のオフセットを取り、パドルの幅を追加します。それがゲームエリアの幅と等しい場合は、 keydownを無視してください。

またボール/ボックスを生成する方法と、ボール/ボックスをコンテナの側面と上部の壁にバウンスさせる方法についてのヘルプも必要です。

あなたが要素ではなくcanvasを使用しているので、あなたはCSSでボールを生成することができます...

#ball { 
    width: 20px; 
    height: 20px; 
    border-radius: 20px; 
} 

ここで重要なのは、border-radiusがボールのwidthheightに等しいです。

ボールをバウンスさせるには、とyのベロシティをゲームタイマーでインクリメントします。ボールがパドルまたはゲームエリアのエッジのいずれかに衝突すると、これらの記号を反転させます。 Pong-likeにすると、バウンドがパドルの特定の領域に当たったときのバウンスの修正方法を混乱させることができます。たとえば、遠端に当たった場合や反転したときにシャープな角度になります。

ボールがゲームエリアの端に当たっているかどうかを判断するには、上で説明したのと同じ方法を使用します。

ボールがパドルに影響を与えているかどうかを判断するには、衝突検出コードを使用します。 ボールのYオフセットがパドルのYオフセットよりも高いかどうかを確認します(あなたのパドルが水平トラックで直線的に動くと仮定します)。次に、その条件が満たされた場合、ボールのXオフセットがパドルのXオフセットの範囲内にあり、(+)パドルの幅内にあるかどうかを確認します。

あなたのパドルとゲームエリアが決して変更されない場合は、これらの幅をキャッシュすると便利です。

+0

ヒントをありがとう、私は容器の幅にプレートを制限することができたとボールを下に移動した。しかし、私は衝突を働かせることができません。私はこのURLにコードの更新版をアップロードしました[http://jsfiddle.net/vchouhan/TPZtP/3/] 私はもう一度試してみて、壁の側でボールの衝突を取得しますプレートは反対方向に動く? – Vish

+0

[http://jsfiddle.net/vchouhan/TPZtP/5/]衝突検出! – Vish

関連する問題