停止精灵通过另一个精灵重影

问题描述:

好,所以我刚开始学习java(我通常在Objective-C中编程)。我的第一款游戏是一款类似于神奇宝贝的游戏,但是,它明显更加简化了......停止精灵通过另一个精灵重影

我遇到的麻烦是我无法找到一种方法来阻止两个“鬼影” 。在屏幕上,我设置了边界(边界),玩家精灵和敌人精灵。

public void playerUpdate(GameContainer gc, int delta) throws SlickException 
{ 
    Input input = gc.getInput(); 

    // Right Key Pressed 
    if (input.isKeyDown(Input.KEY_RIGHT) && (leftKeyPressed == false) 
      && (upKeyPressed == false) && (downKeyPressed == false)) 
    { 
     player = walkRight; 
     playerX += speed * delta; 
     rightKeyPressed = true; 
     if (playerX >= Main.getWindowWidth() - pImageWidth) 
     { 
      playerX -= speed * delta; 
     } 
    } else if (rightKeyPressed == true) 
    { 
     player = standRight; 
     rightKeyPressed = false; 
    } 

^^这是我需要实现碰撞检测的地方。 我已经为每个图像添加了矩形以进行碰撞检测,但是,我没有找到使其消失的方法。我需要一种方法来阻止一个精灵走过另一个精灵。

任何想法?

我一直在使用

if (this.playerBoundingBox.intersects(Enemy.getEnemyBoundingBox()) 
{ 
    playerX += speed * delta; 
} 

然而,当我实现这个玩家卡住而无法被释放尝试。

谢谢你们

碰撞检测是一个广泛而深刻的话题,并且有实现它很多方面。

我强烈建议阅读The Guide To Implementing 2D Platformers,这应该会给你一些很好的建议。我已经使用Sonic Retro Physics Guide实现了2D平台引擎,这非常有用。

在我的游戏三叶草:一个好奇的故事我(不必要!)实现了一个更复杂的每像素碰撞与包围盒混合。方法是制定出所需的运动路径,然后逐个像素地检查是否有任何问题 - 如果是的话,只能移动到像素 - 减一。

创建一个在任何情况下都完美无瑕的2D引擎是一个非常高的顺序,而不是你应该尝试的。对演员的大小以及任何可以在单个嘀嗒声中行进的最大速度等事物都有一些限制,这会让你的生活更轻松。忽略能够推动玩家的东西会容易得多,因为那样你只需要一次一个方向地进行碰撞检测(即当玩家移动时,而不是其他所有其他角色移动时)。

+0

好吧欢呼吧,我没有真的想为我的第一个Java游戏做一个激烈的2D游戏。 我只是想会有办法阻止通过相互... 确定好该节目播音员的欢呼声动2个精灵:d 如果任何人想贡献,请这样做:) – Savlon

+0

我想一个更直接的答案是,在Slick2D中没有办法直接做到这一点,你需要自己实现一些东西。祝你好运! –