首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java游戏碰撞Slick2D

Java游戏碰撞Slick2D
EN

Stack Overflow用户
提问于 2014-02-04 04:14:53
回答 1查看 191关注 0票数 0

我正在使用Slick和Tiled2D来制作一个自上而下的角色扮演游戏风格的游戏。我正在尝试碰撞,但玩家似乎能够穿过建筑物左侧的积木,或者是积木的左半部分。完整的项目在这里:http://github.com/Cj1m/RPG这里是我的玩家移动和碰撞检测的代码:

代码语言:javascript
复制
@Override
public void update(GameContainer gc, int delta) throws SlickException {
    input = gc.getInput();
        if(input.isKeyDown(Input.KEY_W)){
            if(!isBlocked(x, y - delta * 0.1f)){
                y-=0.1 * delta;
                timer(0,1,delta);
            }
        }else if(input.isKeyDown(Input.KEY_S) && y < screenBottomEdge){
            if (!isBlocked(x, y + playerHeight + delta * 0.1f)){
                y+=0.1 * delta;
                timer(0,0,delta);
            }
        }else if(input.isKeyDown(Input.KEY_A) && x > screenLeftEdge){
            if (!isBlocked(x - delta * 0.1f, y)){
                x-=0.1 * delta;
                timer(0,2,delta);
            }
        }else if(input.isKeyDown(Input.KEY_D) && x < screenRightEdge){
            if (!isBlocked(x + playerWidth + delta * 0.1f, y)){
                x+=0.1 * delta;
                timer(0,3,delta);
            }
        }
}

代码语言:javascript
复制
private boolean isBlocked(float x, float y) {
    int xBlock = (int)x / 30;
    int yBlock = (int)y / 30;
    return blocked[xBlock][yBlock];
}
EN

回答 1

Stack Overflow用户

发布于 2014-02-05 22:38:35

我猜isBlocked中的x和y是玩家像素精确的x和y位置,而xBlock和yBlock是瓦片精确的位置。

当你说他们走了半个街区时,在我看来,这似乎是一个舍入问题

代码语言:javascript
复制
int xBlock = (int)x / 30;
int yBlock = (int)y / 30;

尝试一些类似的东西

代码语言:javascript
复制
(int) Math.round(x/30.0);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21536817

复制
相关文章

相似问题

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