Javascript画布,通过数组进行冲突检测不起作用
Javascript canvas, collision detection via array not working
基本上,我有一个程序,它可以制作一个正方形,并将左、右、顶部和底部存储在一个数组中。当它形成一个新的正方形时,它会在数组中循环。如果AABB碰撞检测使新的正方形与另一个正方形重叠,则应确保不显示该正方形,然后重试。以下是我制作的代码片段,我认为问题在于:
var xTopsBotsYTopsBotsSquares = [];
//Makes a randint() function.
function randint(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
function checkForOccupiedAlready(left, top, right, bottom) {
if (xTopsBotsYTopsBotsSquares.length == 0) {
return true;
}
for (i in xTopsBotsYTopsBotsSquares) {
if (i[0] <= right || i[1] <= bottom ||
i[2] >= left || i[3] >= top) {/*Do nothing*/}
else {
return false;
}
}
return true;
}
//Makes a new square
function makeNewsquare() {
var checkingIfRepeatCords = true;
//DO loop that checks if there is a repeat.
do {
//Makes the square x/y positions
var squareRandomXPos = randint(50, canvas.width - 50);
var squareRandomYPos = randint(50, canvas.height - 50);
//Tests if that area is already occupied
if (checkForOccupiedAlready(squareRandomXPos,
squareRandomYPos,
squareRandomXPos+50,
squareRandomYPos+50) == true) {
xTopsBotsYTopsBotsSquares.push([squareRandomXPos,
squareRandomYPos,
squareRandomXPos+50,
squareRandomYPos+50]);
checkingIfRepeatCords = false;
}
}
while (checkingIfRepeatCords == true);
}
非常感谢您的帮助。
我认为您的循环是不正确的,因为您使用i
作为值,而它是一个密钥:
for (i in xTopsBotsYTopsBotsSquares) {
if (i[0] <= right || i[1] <= bottom ||
i[2] >= left || i[3] >= top) {/*Do nothing*/}
else {
return false;
}
}
可能变成:
for (var i = 0, l < xTopsBotsYTopsBotsSquares.length; i < l; i++) {
var data = xTopsBotsYTopsBotsSquares[i];
if (data[0] <= right || data[1] <= bottom ||
data[2] >= left || data[3] >= top) {/*Do nothing*/}
else {
return false;
}
}
相关文章:
- JS-Backspace检测不起作用
- Magento Jquery引导程序和原型冲突?导航标签不起作用
- mootools和jquery冲突-noconflict对我不起作用
- jquery.min.js版本冲突在asp.net网站中不起作用
- 为什么我的碰撞检测在 Phaser 中不起作用
- 检测样式表是否无法加载(在 Firefox 上不起作用)
- 检测右键单击+左键单击不起作用
- Capslock 检测在 Javascript 中不起作用
- 鼠标滚轮事件检测目前在 Firefox 中不起作用
- IE 检测不起作用
- Javascript战舰游戏命中检测不起作用
- 由于添加或删除文件而导致的文件冲突,引导弹出框不起作用
- 为什么我的 scrollTop 用于检测何时滚动到页面底部不起作用
- JScrollPane 和 Fancybox 冲突 - Fancybox 不起作用
- AngularJS路由不起作用(甚至没有检测到)
- 用于检测颜色冲突的 getImageData 不起作用
- JavaScript:碰撞检测不起作用
- Javascript画布,通过数组进行冲突检测不起作用
- jQuery与Prototype冲突(noconflict不起作用)
- Flash阶段内的鼠标X/Y检测不起作用Moz&PC上的Webkit