我正在使用Javafx制作一个自上而下的滚动游戏,玩家可以左右移动。我试图给予玩家发射射弹的能力,但到目前为止,无论何时被射击,他们只会从玩家开始的地方移动,这是中心。即使我向左或向右移动,射弹仍然来自中心。射弹和玩家都是圆形物体,我正在使用Player.getCenterX()
方法随时找出玩家的位置,然后将射弹的起始位置设置到该位置。
我用这条线向左或向右移动球员
myPlayer.setTranslateX(myPlayer.getTranslateX() + myPlayer.getSpeed())
有些东西不起作用。 .setTranslateX()
方法不会改变玩家的中心位置吗?我该如何解决这个问题?
答案 0 :(得分:0)
正如你所说,你使用Player.getcenterX()将提供前向和后向更改位置作为你指定的中心,如果你想移动左或右,那么你可以使用javafx中的Point2D或Point3D包。 它可以快速,易于理解地处理位置。如果你的游戏是2D或3D游戏。 尝试使用这些参考。
http://docs.oracle.com/javase/8/javafx/api/javafx/geometry/Point2D.html
答案 1 :(得分:0)
不是翻译圆圈,而是通过更新圆圈的中心位置来重新定位圆圈。
例如:
myPlayer.setCenterX(myPlayer.getCenterX() + myPlayer.getSpeed())
然后,您可以通过调用以下方式确定圆圈中心的x位置:
myPlayer.getCenterX();
翻译通常用于临时过渡和动画,但你并不是真的在这里做,你正在永久地移动玩家,所以重新定位是一种更好的方法。如果您坚持使用翻译而不是按照我的建议重新定位中心,那么请阅读Node文档中的边界矩形信息,特别是尝试理解boundsInParent。