- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在碰撞检测中有一个关于类似问题的问题,但它并不完全相同。我遇到了一个新游戏项目的问题(我正在尝试了解有关 HTML5 Canvases 和 Socket.io 的更多信息),其中我的碰撞不起作用。我认为我的问题集中在碰撞上,但现在我开始思考一些不同的事情。我之所以在 for-loop 区域发布了一个不同的问题,是因为我不确定我的问题是与 for-loop 相关还是与碰撞检测相关。无论哪种方式,我都乐意记下我的其中一个问题。
此代码循环每一帧以获取子弹和船只的事件位置。如果子弹接触到船,它将被移除,并且一些健康点将从船上移除。
我使用的教程:http://jlongster.com/Making-Sprite-based-Games-with-Canvas
除此之外,这是我的 checkCollisions 代码。似乎碰撞功能起作用了,因为当我开始记录每次迭代时的所有位置时,我的对象的位置似乎每次都在变化。这是我需要回调的那些 for 循环问题之一吗?
非常感谢您的帮助。我一定会投票/选择每一个有帮助的回复! :)
已解决!原来我的一个数组没有被正确传递。我要感谢你们告诉我总是将它拆分成多个功能,这真的帮助我解决了这个问题!
// Let's start out here: I have a players[] array
//that's essentially a list of all players on the server
// and their positions. I omitted server connection functionality since that's not my error
// source.
function checkCollisions() {
for (var i = 0; i < players.length; i++) { // Iterating through all players
var pos = [players[i].posX, players[i].posY];
var size = [SHIP_WIDTH, SHIP_HEIGHT]; // This is the size of each player, it's a ship game. So these are constants.
if (players[i].userId != PLAYER.userId) { // Each player has a userId object, this is just doublechecking if we're not uselessly iterating
for (var j = 0; j < bullets.length; j++) { // We're now looping through bullets, an array of all the bullets being shot by players
var pos2 = bullets[j].pos;
var size2 = BULLET_SIZE;
var sender = bullets[j].sender;
if (boxCollides(pos, size, pos2, size2)) { // Collision code
if (sender != players[i].userId) {
bullets.splice(j, 1);
i--; // Tried here with j--, and by removing the entire line. Unfortunately it doesn't work :(
break;
}
}
}
}
}
}
最佳答案
您是否尝试过使用 console.log 来查看程序在哪里中断?这可能会帮助您确定是否存在多个错误,或者是否只有这个错误。如果前面的陈述有问题,你可能不知道如果你已经修复了 i--/j-- ...?
编辑: 啊,我看到你在我发布这个之后修复了一些东西。恭喜,干得好!
关于javascript - 理论上,这个 For-Loop 应该工作吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30269063/
我是一名优秀的程序员,十分优秀!