首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LWJGL碰撞检测缺陷

LWJGL碰撞检测缺陷
EN

Stack Overflow用户
提问于 2012-05-14 22:52:58
回答 1查看 561关注 0票数 1

我目前正在使用这个代码在我的类似游戏的空间入侵者中进行2D碰撞检测:

代码语言:javascript
复制
for(byte k = 0; k < enemies.length; k++) {
    if(shot.x < enemies[k].getTexture().getImageWidth() && shot.x  > enemies[k].pos.x) {
            if(shot.y - 1.2f * frameCount < enemies[k].pos.y && shot.y - 1.2f * frameCount > Main.enemies[k].pos.y - enemies[k].getTexture().getTextureHeight()) {
                    Main.enemies[k].hit = true;
            }
    }
}

然而,在这种类型的碰撞检测中有一个主要缺陷;我只能检测来自下面的碰撞。为什么会这样呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-15 00:24:54

仅从底部获得冲突的原因是您的边界检查有一些错误。下面我给出了一个固定的更清晰的版本,我假设shotWidth和shotHeight是可以计算出来的。(我省略了关于frameCount的部分,但如果需要的话,应该可以重新编辑它)。

代码语言:javascript
复制
final int shotX = shot.x;
final int shotY = shot.y;
final int shotWidth = ?
final int shotHeight = ?
for(byte k = 0; k < enemies.length; k++) {
    final int enemyX = enemies[k].pos.x;
    final int enemyY = enemies[k].pos.y;
    final int enemyWidth = enemies[k].getTexture().getImageWidth();
    final int enemyHeight = enemies[k].getTexture().getImageHeight();

    if(     shotX < enemyX + enemyWidth &&
            shotX + shotWidth < enemyX &&

            shotY < enemyY + enemyHeight &&
            shotY + shotHeight < enemyY) {

        Main.enemies[k].hit = true;
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10585746

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档