UF Game 游戏开发

分享游戏开发的经验和技巧,包括各种游戏开发套件和工具的使用

如何使用Slick2D使用tile属性检测和处理冲突?

我试图在Slick2D基础上设置一个基于地图的碰撞检测。 我目前在地图上有两个图层,一个背景图层和一个碰撞图层。 碰撞层有一个“阻塞”属性的瓦片,画在玩家不能走的区域上。 我已经浏览了Slick文档,但不明白如何读取tile属性并将其用作碰撞检测的标志。 我的“移动”播放器的方法有些不同,可能会影响碰撞的处理方式。 玩家总是停留在同一个地点,而不是更新玩家在窗口上的位置,更新地图渲染的x和y。 我正在通过限制播放器的移动来处理与对象的碰撞,当它的hitbox与对象的hitbox相交时。 例如,玩家击中对象右侧的代码如下所示: if(Player.bounds.intersects(object.bounds)&&(Player.x<=(object.x+object.width+0.5))&&Player.isMovingLeft){ isInCollision=true; level.moveMapRight(); } else if(Player.bounds.intersects(object.bounds)&&(Player.x<=(object.x+object.width+0.5))&&Player.isMovingRight){ isInCollision=true; level.moveMapRight(); } else if(Player.bounds.intersects(object.bounds)&&(Player.x<=(object.x+object.width+0.5))&&Player.isMovingUp){ isInCollision=true; level.moveMapRight(); } else if(Player.bounds.intersects(object.bounds)&&(Player.x<=(object.x+object.width+0.5))&&Player.isMovingDown){ isInCollision=true; level.moveMapRight(); } 并在关卡的更新代码中: if(!Player.isInCollision) Player.manageMovementInput(map, i); 但是,这种方法仍然有一些错误。 例如,当从右侧击中对象时,玩家将向上和向左移动,通过对象剪切并卡在其hitbox内。 如果有更有效的方式来处理这个,任何意见将不胜感激。