我对Java和Slick2D都很陌生,即使在浏览Google之后,我也无法找到问题的答案。 在我的游戏中,我有一个可以前后跑来跑去的角色。我希望他能够射出射弹,但是我用它编码的方式,射弹在切换方向或跳跃时会改变轨迹。
if(input.isKeyPressed(Input.KEY_SPACE)){
shotX = charPosX;
shotY = charPosY;
if(left){
shotX += delta * -0.5f;
}else{
shotX +=delta * 0.5f;
}
}
这基本上是我目前的代码。 "左边" boolean只是说明角色是面向左还是右。我觉得我错过了一些明显的东西,但我想知道是否有人有一个简单的解决方案,也许是一种方法来停止将镜头的位置设置到角色的位置之后渲染。任何帮助表示赞赏。
答案 0 :(得分:0)
正如你在评论中被告知的那样,很难从这么小的代码中确定情况,但我认为问题在于,当空格键被保留时,你所拥有的if子句会被反复执行,将子弹的位置设置为角色的位置。
可能更好的是在bullet类中有一个布尔值,指示它是否已被触发,然后通过将 delta times speed 添加到值来更新每个更新周期的位置。您描述的情况似乎只有一个子弹,每次空格键都被重置。
此外,子弹只能在空格键保持时移动,因为移动代码在if语句中。我希望这会有所帮助。