0

我通常对 Java 和 Slick2D 都很陌生,即使在浏览了 Google 之后,我也找不到我的问题的答案。在我的游戏中,我有一个角色当前可以来回奔跑和跳跃。我希望他能够发射弹丸,但是按照我的编码方式,弹丸会在他切换方向或跳跃时改变轨迹。

if(input.isKeyPressed(Input.KEY_SPACE)){    
        shotX = charPosX;
        shotY = charPosY;
    if(left){
            shotX += delta * -0.5f;             
        }else{
            shotX +=delta * 0.5f;
        }

}

这基本上是我目前拥有的代码。“left”布尔值简单地说明角色是面向左侧还是面向右侧。我觉得我遗漏了一些明显的东西,但我想知道是否有人对此有简单的解决方案,也许是一种在渲染后停止将镜头位置设置为角色位置的方法。任何帮助表示赞赏。

4

1 回答 1

0

正如您在评论中被告知的那样,很难从这么少的代码中确定情况,但我认为问题是在按住空格键时,您的 if 子句会一遍又一遍地执行,设置子弹的位置到角色的位置。

可能更好的是在子弹类中有一个布尔值,指示它是否已被发射,然后通过将增量时间速度添加到值来更新每个更新周期的位置。您所描述的情况似乎只有一个子弹,每次按住空格键时都会重置。

此外,子弹只能在按住空格键时移动,因为移动代码在 if 语句中。我希望这有帮助。

于 2012-12-23T01:21:44.973 回答