Javascript 如何检查一个fabricjs对象是否与另一个发生碰撞?
我的requestAnimationFrame循环中有以下代码:Javascript 如何检查一个fabricjs对象是否与另一个发生碰撞?,javascript,html5-canvas,fabricjs,Javascript,Html5 Canvas,Fabricjs,我的requestAnimationFrame循环中有以下代码: //move obstacles game.obstacles.forEach(function(obstacle, index) { obstacle.shape.left-=OBSTACLE_SPEED //if outside to the left of canvas remove element, //splice: https://st
//move obstacles
game.obstacles.forEach(function(obstacle, index) {
obstacle.shape.left-=OBSTACLE_SPEED
//if outside to the left of canvas remove element,
//splice: https://stackoverflow.com/questions/9882284/
//index in foreach: https://stackoverflow.com/questions/10179815/
if (obstacle.shape.left < 0-OBSTACLE_SIZE*2) {
game.obstacles.splice(index, 1) //removes invisible obstacle
console.log("obstacles.size: " + game.obstacles.length)
addObstacle() //adds new obstacle
}
//check if player intersects with obstacle
//console.log("intersects? " + obstacle.shape.intersectsWithObject(player.avatar))
if (obstacle.shape.intersectsWithObject(player.avatar)) {
console.log("YO ITS OVER!")
alert("asdas")
}
})
我基本上是在尝试实现这个游戏的基本功能:
我发现你的代码中唯一可能引起麻烦的是:
游戏。障碍。拼接(索引,1)
。如果完全忽略左边界检查(当然只是为了测试),会发生什么?你能发布一个代码的工作示例来清楚地显示问题吗?我在使用圆圈的同时也能解决障碍,目前还可以。在画布上移动对象后调用setCoords()
也有助于提高准确性。Fabricjs不是为游戏设计的,还有许多其他库是专门为html画布游戏设计的,试试这些吧。
if (player.moving == true ) { //move player
//console.log("moving")
player.avatar.top+=player.dy
}
//console.log(player.avatar.top)
canvas.renderAll()