私は、あるdivを通過するときにカーソルが「減速する」と思われるゲームの一部を持っています。私はdivとの衝突を検出できる関数を使用しています。これは、カーソルが最初のdivを満たしてもうまく動作しますが、2番目のdivではまったく動作しません。JavaScript関数はクラスの最初のdivにのみ影響します
Check out this jsFiddle私が話していることのより良いアイデアです。カーソルを左にある最初の白いブロック(class='thing'
)に渡すと、速度が低下します。カーソルを他のブロック(またclass='thing'
)に渡すと、何も起こりません。私はこの衝突関数がすべてのdivで動作するようにする必要があります。class='thing'
です。
HTML
<div id='cursor'>
</div>
<div class='thing' style='width:70px; height:70px; background: #fff; position: absolute; bottom: 350px; right: 800px; z-index: -1;'>
</div>
<div class='thing' style='width:70px; height:70px; background: #fff; position: absolute; bottom: 200px; right: 400px; z-index: -1;'>
</div>
JS
(function collide(){
var newInt = setInterval(function() {
function collision($cursor, $thing) {
var x1 = $cursor.offset().left;
var y1 = $cursor.offset().top;
var h1 = $cursor.outerHeight(true);
var w1 = $cursor.outerWidth(true);
var b1 = y1 + h1;
var r1 = x1 + w1;
var x2 = $thing.offset().left;
var y2 = $thing.offset().top;
var h2 = $thing.outerHeight(true);
var w2 = $thing.outerWidth(true);
var b2 = y2 + h2;
var r2 = x2 + w2;
// change 12 to alter damping higher is slower
var varies = 12;
if (b1 < y2 || y1 > b2 || r1 < x2 || x1 > r2){
} else {
varies = 200;
console.log(varies);
}
$xp += (($mouseX - $xp)/varies);
$yp += (($mouseY - $yp)/varies);
$("#cursor").css({left:$xp +'px', top:$yp +'px'});
}
$(collision($('#cursor'), $('.thing')));
//$('.result').text(collision($('#cursor'), $('.thing')));
}, 20);
})();
$の事は 'のsetIntervalを使用して、コレクション – mplungjan
避けているようにあなたが独自にこれをセレクタとしてIDを使用して行うことができ、両方の要素を選択する必要があり、これを克服するために、あなたはそれを動作するように以下のようにコードを変更することができますアニメーションのために(そして、あなたのJSFiddleの原因で)遅れを引き起こす可能性があるからです。 'window.requestAnimationFrame'を使用してください。 –
http://sourceforge.net/p/jquerycollision/code/ci/master/tree/jquery-collision.js – mplungjan