2016-05-03 13 views
1

JavaScriptで簡単なゲームを作っています。フェーザーライブラリを使用しています。私はこれに新しいので、うまくいけば、これは愚かな質問ではありません。オブジェクトをエッジにバウンスさせる方法

私はそれをすべて完璧に作っていますが、私は岩をどのように壁にぶつけて、それらを通り、反対側に現われるのか知りたいです。

それは、この機能とは何かを持っている:

私は

「それが幅をヒットした場合には、誰かに言われました。その後、940 X = 940、あなたが戻って939に行く開始、i--などshot.reset(x, y);リセットするのではなく、shot.reset(x, y);

もしあなたがボトムまたはトップをヒットした場合は、同じ高さに保ち、幅を同じに保ちます。

しかし、これをコードに実装する方法がわかりません。私は試しましたが、失敗しました:)非常にイライラしていますので、この問題に関する助けは素晴らしいでしょう。

ありがとうございました。

+0

私が取得するかわかりませんあなたはこのようなものを試すことができます:https://jsfiddle.net/Qg4cV/8/(私は 'collideWorldBounds'と' bounce'を作成時に岩の本体に追加しました) – jolmos

+0

ああそれも動作します: 0ありがとうございますxx – Nevershow2016

答えて

1

通常、私は自分のオブジェクトの「スピード」を表す速度ベクトルを作成します。 各フレームで、その速度ベクトルを位置ベクトルに追加します。オブジェクトを反対方向に移動させたい場合は、ベクトルに-1を掛けます。

このようなベクトルを作成し、オブジェクトがエッジをコリジョンするときに-1を掛けます。

あなたは、このような等の円滑な速度低下、inspaceのような動きとして、ベクトルのこのタイプの多くのものを作ることができます...

例:

//on init 
var velocity = {x: 10; y: 10}; 
var pos = {x: 10; y:10}; 

//on frame update 
pos.x += velocity.x; 
pos.y += velocity.y 

//on edge collision 
velocity.x = velocity.x * -1; 
velocity.y = velocity.y * -1; 
+0

うーん、私は本当に、これは非常に新しい、申し訳ありませんが、私はそれを表示する可能性がありますかどうかを確信していないのですか? – Nevershow2016

+0

確かに、私は私の応答を編集しています:) –

+0

ああ私はそれをしました:) – Nevershow2016

関連する問題