我在Processing.JS编程命中检测时遇到了一些麻烦。我试图创建一个函数,检查某些东西是否触及一个对象并返回true,否则返回false。就是这个。
`Box.prototype.checkTouching = function(v){
if(v.position.x > this.position.x - this.width/2 && v.position <
this.position.x + this.width/2 && v.position.y > this.positon.y -
this.height/2 && v.position.y < this.position.y + this.height/2){
return true;
}else{
return false;
}
};`
我通过在draw函数中创建一个新变量“b”来实现它,该函数保存函数返回的值,然后使用if语句检查值“b”是否为true。像这样
var b = box3.checkTouching(mos);
if(b === true){
println("It works");
}
当两个对象触摸时应该发生的事情是将“它工作”的消息打印到控制台。不幸的是,即使运行该函数的对象正在触摸正在运行的对象,也没有任何反应。我已经检查过逻辑是否有效并且它是有效的所以我知道它必须是我的实现我似乎无法找出我的实现有什么问题。谁能说出我做错了什么?完整计划here
答案 0 :(得分:0)
您需要检查矩形是否重叠。你可以通过检查每一方来做到这一点,如下所示:
if(rectOneRight > rectTwoLeft && rectOneLeft < rectTwoRight && rectOneBottom > rectTwoTop && rectOneTop < rectTwoBottom){
//collision
}
无耻的自我推销:我在Processing({矩形 - 矩形碰撞)中编写了一个关于碰撞检测的教程here。
答案 1 :(得分:0)
要建立在Kevin所发表内容的基础上,请说我想将鼠标悬停在矩形上。处理具有内置变量mouseX, mouseY
,该变量返回鼠标的坐标。
因此我将检查鼠标X的位置是否大于rect X pos,并且小于rect X pos + rect宽度。然后,对mouseY,rect Y和rect height进行相同操作
if (mouseX > rectXpos &&
mouseX < rectXpos + rectWidth &&
mouseY > rectYpos &&
mouseY < rectYpos + rectHeight) {
// the button is being hovered over
}