我正在使用Adobe 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");
}
}但这并不能解决任何问题,该语句总是错误的。
我该如何解决这个问题?
发布于 2016-07-15 11:49:42
您可以使用"setBounds(_x,_y,_wifth,_height)“
player.setBounds(-30 , -30 , 60 , 60);
enemy.setBounds(-30 , -30 , 60 , 60);然后检查:
bounds = player.getTransformedBounds();
if (bounds.intersects(enemy.getTransformedBounds()))
{
// something code
}发布于 2018-02-25 02:49:21
以下是Adobe Animate CC的示例代码,其中包含6个可拖动项目和2个拖放区域。当画布设置为响应式时,这也是有效的。在拖放和碰撞检测/点击测试之间,应该很容易将其拆分成任何需要的东西。
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");
}
}发布于 2018-12-18 17:52:31
尝试使对象更小。代码应该可以工作。这对我很管用。我有一个播放器,它是一个自行车。当自行车前轮撞到猫时,程序显示碰撞。
当我的自行车后轮与猫碰撞时,它不会显示碰撞警报。
https://stackoverflow.com/questions/36496223
复制相似问题