Java二维射击问题

Java二维射击问题,java,entity,slick2d,Java,Entity,Slick2d,一般来说,我对Java和Slick2D都是新手,即使浏览了Google,我也找不到我问题的答案。 在我的游戏中,我有一个角色,目前可以来回跑,跳跃。我希望他能够发射射弹,但按照我的编码方式,当他改变方向或跳跃时,射弹会改变弹道 if(input.isKeyPressed(Input.KEY_SPACE)){ shotX = charPosX; shotY = charPosY; if(left){ shotX += delt

一般来说,我对Java和Slick2D都是新手,即使浏览了Google,我也找不到我问题的答案。 在我的游戏中,我有一个角色,目前可以来回跑,跳跃。我希望他能够发射射弹,但按照我的编码方式,当他改变方向或跳跃时,射弹会改变弹道

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

}

这基本上就是我目前拥有的代码。左侧布尔值仅表示角色是面向左侧还是右侧。我觉得我遗漏了一些明显的东西,但我想知道是否有人有一个简单的解决方案,也许有一种方法可以在渲染后停止将快照的位置设置为角色的位置。非常感谢您的帮助。

正如您在评论中所听到的那样,很难从这么小的代码中判断情况,但我认为问题在于,当空格键被按住时,您反复执行if子句,将项目符号的位置设置为字符的位置

更好的方法可能是在bullet类中有一个布尔值,指示它是否已被激发,然后通过将增量乘以速度添加到值中,在每个更新周期更新位置。您描述的情况似乎只有一个项目符号,每次按住空格键时都会重置


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

shotX和charPosX是什么类型的?我希望这可以归结为分配引用而不是值,但是如果您稍微扩展一下信息,我应该能够提供帮助。我所有的位置变量都是浮动的。而且,听起来这就是我要找的。你能详细说明一下我是如何分配一个参考值而不是一个值的吗?浮点数或浮点数,用一个大F?传统的网络业余游戏发展智慧说你的投射物实体和玩家实体应该是分开的对象。如果你还没有弄明白这一点,你介意发布你的完整代码吗?