2
我正在使用Fabric和JS進行項目工作。 Fabric將畫布內的對象作爲數組進行建模。厄運的碰撞循環
我有一個碰撞檢測方法,遍歷畫布數組,並確定何時與新對象的碰撞已被檢測到。檢測功能正常且正在工作。我在屏幕上基本上有5個街區,另一個街區在下坡路上。當它接觸到它們時,它們會改變顏色。
我正在將它接觸到的每個塊的名稱打印到控制檯和屏幕上。我想要的是顯示最近觸摸過的區塊。
問題是總是錯過一個塊。如果namers是顏色,如:
Red
Green
Blue
Pink
Yellow
輸出始終R,G,B,Y - 偶爾的一個是錯過將改變,典型地它是粉紅色或藍色。
我正在使用的代碼是:
function detectCollision(target) {
target.setCoords();
canvas.forEachObject(function(obj) {
obj.setCoords();
if (obj === target) return;
if (obj != target && target.intersectsWithObject(obj)){
obj.opacity = 0.5;
console.log("Collision with Obj: " +obj.label);
return obj;
}else{
obj.opacity = 1;
}
});
}
我看到了「是」,因爲我已經嘗試了各種其他的東西,如使用while循環,也使用陣列,這樣,當一個對象被觸摸它被添加到數組中,然後對其執行檢查,但結果仍然相同。
這是非常令人沮喪的,我根本看不出是什麼問題。任何幫助非常感謝。謝謝。
萬一奇怪的bug,我console.log一切。在這裏,我會寫「檢測碰撞'+ target.label;在循環中:'測試'+ obj.label;還'發現相同'+ obj.label;所以你終於可以看到發生了什麼 – GameAlchemist
我有各種消息都打印到控制檯t嘗試並解釋發生了什麼。最終解決它,謝謝你的建議:) – null