2016-04-08 40 views
0

私はAdobe Animate CCを使用しており、JavaScriptでコーディングしています。Adob​​e Animate CCとJavaScript - 衝突検出

createjs.Ticker.on("tick", gameLoop, state); 

function gameLoop(){ 

var pt = player.globalToLocal(collect.x, collect.y); 
    if(player.hitTest(pt.x, pt.y)){ 
     alert("hit");   
    } 
} 

しかし、これは何も実行されていませんが、ステートメントは常にfalseです。次のコードを使用して、2つのシンボル間の衝突を検出しようとしています。

どうすれば解決できますか?

+0

hitTestの仕組みを誤解している可能性があります。最近の投稿をチェックしてください:http://stackoverflow.com/questions/36257762/flash-cc-createjs-hittest-works-without-hit/36360801#36360801 – Lanny

答えて

0

あなたはその後、

player.setBounds(-30 , -30 , 60 , 60); 
enemy.setBounds(-30 , -30 , 60 , 60); 

を確認するには、 "setBounds(_x、_y、_wifth、_height)" を使用することができます:スペイン語で

bounds = player.getTransformedBounds(); 

if (bounds.intersects(enemy.getTransformedBounds())) 
{ 
    // something code 
} 

参照:ここでhttps://www.youtube.com/watch?v=AlqiplcnM7s

+0

アニメートシンボルにはすでに「nominalBounds」があります(ただし、getBoundsはそれを使用してください) - あなたはそれらの座標を使用することができます。 – Lanny

0

は一例です6つのドラッグ可能なアイテムと2つのドロップエリアを組み込んだAdobe Animate CCのコード。これは、キャンバスが応答可能に設定されている場合にも機能します。ドラッグ・アンド・ドロップと衝突検出/ヒット・テストの間に必要なものにこれを混乱させるのは簡単です。

this.block1.on("pressmove", function (evt) { 

var p = stage.globalToLocal(evt.stageX, evt.stageY); 

evt.currentTarget.x = p.x; 

evt.currentTarget.y = p.y; 

}); 

this.block2.on("pressmove", function (evt) { 

var p = stage.globalToLocal(evt.stageX, evt.stageY); 

evt.currentTarget.x = p.x; 

evt.currentTarget.y = p.y; 

}); 

this.block3.on("pressmove", function (evt) { 

var p = stage.globalToLocal(evt.stageX, evt.stageY); 

evt.currentTarget.x = p.x; 

evt.currentTarget.y = p.y; 

}); 

this.block4.on("pressmove", function (evt) { 

var p = stage.globalToLocal(evt.stageX, evt.stageY); 

evt.currentTarget.x = p.x; 

evt.currentTarget.y = p.y; 

}); 

this.block5.on("pressmove", function (evt) { 

var p = stage.globalToLocal(evt.stageX, evt.stageY); 

evt.currentTarget.x = p.x; 

evt.currentTarget.y = p.y; 

}); 

this.block6.on("pressmove", function (evt) { 

var p = stage.globalToLocal(evt.stageX, evt.stageY); 

evt.currentTarget.x = p.x; 

evt.currentTarget.y = p.y; 

}); 





this.on("tick", update.bind(this)); 

function update() { 

var b1 = this.block1.localToLocal(100, 0, this.frontAnswerDrop); 

var b2 = this.block2.localToLocal(100, 0, this.frontAnswerDrop); 

var b3 = this.block3.localToLocal(100, 0, this.frontAnswerDrop); 

var b4 = this.block4.localToLocal(100, 0, this.backAnswerDrop); 

var b5 = this.block5.localToLocal(100, 0, this.backAnswerDrop); 

var b6 = this.block6.localToLocal(100, 0, this.backAnswerDrop); 





if (this.frontAnswerDrop.hitTest(b1.x, b1.y)) { 

console.log("b1 collided"); 

} 

if (this.frontAnswerDrop.hitTest(b2.x, b2.y)) { 

console.log("b2 collided"); 

} 

if (this.frontAnswerDrop.hitTest(b3.x, b3.y)) { 

console.log("b3 collided"); 

} 

if (this.backAnswerDrop.hitTest(b4.x, b4.y)) { 

console.log("b4 collided"); 

} 

if (this.backAnswerDrop.hitTest(b5.x, b5.y)) { 

console.log("b5 collided"); 

} 

if (this.backAnswerDrop.hitTest(b6.x, b6.y)) { 

console.log("b6 collided"); 

} 

}