跟踪javafx中对象的位置

时间:2015-01-11 05:11:16

标签: java javafx

我正在使用Javafx制作一个自上而下的滚动游戏,玩家可以左右移动。我试图给予玩家发射射弹的能力,但到目前为止,无论何时被射击,他们只会从玩家开始的地方移动,这是中心。即使我向左或向右移动,射弹仍然来自中心。射弹和玩家都是圆形物体,我正在使用Player.getCenterX()方法随时找出玩家的位置,然后将射弹的起始位置设置到该位置。

我用这条线向左或向右移动球员

myPlayer.setTranslateX(myPlayer.getTranslateX()  + myPlayer.getSpeed())

有些东西不起作用。 .setTranslateX()方法不会改变玩家的中心位置吗?我该如何解决这个问题?

2 个答案:

答案 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