当前位置: 首页 > 知识库问答 >
问题:

制作自定义形状JavaFX

温智明
2023-03-14

我正在用JavaFX制作一个2D游戏,当检测到冲突时,我得到的结果相当不准确,因为玩家精灵被设置为矩形的填充,因此没有预期的边框。有没有办法让我自己的形状尽可能准确?

我的另一个想法是检查碰撞的像素是否透明,然后如果它是,则不会结束游戏。有谁知道一种方法可以获得碰撞像素的坐标,以便从那里我可以使用PixelReader进行检查?

如果有人知道更好的方法,请告诉我!

谢谢,伊森

共有1个答案

糜博远
2023-03-14

有不同的方法可以做到这一点。这是我成功使用的一种方法。我会制作命中框,它们本身就是矩形。然后,在碰撞检测过程中,我会遍历所有命中框,查看它们是否与飞行弹丸的命中框发生碰撞。

这允许你用更小的矩形填充复杂的形状。例如,一个平面有一个长的水平矩形和一个中间交叉的小矩形。

目前我正在使用libGDX。在libGDX中,我使用了多边形对象。https://stackoverflow.com/a/28540488/1490322:我在JavaFX中没有看到类似的功能,但是将libGDX的功能复制到JavaFX代码中并不难...他们的代码是开源的。

 类似资料:
  • 对于Three.js没有提供的形状,可以提供自定义形状来创建。 由于自定义形状需要手动指定每个顶点位置,以及顶点连接情况,如果该形状非常复杂,程序员的计算量就会比较大。在这种情况下,建议在3ds Max之类的建模软件中创建模型,然后使用Three.js导入到场景中,这样会更高效方便。 自定义形状使用的是Geometry类,它是其他如CubeGeometry、SphereGeometry等几何形状的

  • 绘制自定义形状-扇形 感谢群友 墨明棋妙 309764601@qq.com 提供功能思路和源码 目前cesium的entity里面是没有直接绘制扇形的形状的,当时在网上搜索的时候,在官方的google group里面有人明确说明是没有的,然后需要自己重载Geometry,再重新打包。。。 这,略麻烦,然后墨明棋妙兄弟就自己写了一个函数来进行绘制,最终提供了源码,感谢感谢 思路比较简单,如下: 1.

  • 我不是JavaFX的资深程序员,想请教一下。如何在JavaFX中为按钮制作或设置不同的形状?默认情况下,按钮具有这些圆角矩形形状。我想做一个按钮形状像下面的图片,一个L形按钮。 我已经谷歌了这个话题很多次,但仍然没有找到解决办法。 你能帮助我吗?

  • 本文向大家介绍Three.js学习之文字形状及自定义形状,包括了Three.js学习之文字形状及自定义形状的使用技巧和注意事项,需要的朋友参考一下 1.文字形状   说起3d文字想起了早年word里的一些艺术字:   那么TextGeometry可以用来创建三维的文字形状。   使用文字形状需要下载和引用额外的字体库。这里,我们以 helvetiker字体为例。 引用:   TextGeometr

  • 我正在创建一个自定义的ImageView,它将我的图像裁剪成一个六边形形状,并添加一个边框。我想知道我的方法是正确的还是我的做法是错误的。有一堆自定义库已经这样做了,但没有一个开箱即用的形状,我正在寻找。话虽如此,这更多的是一个关于最佳实践的问题。 您可以在这个要点中看到完整的类,但主要问题是这是否是最好的方法。我觉得不对,部分原因是一些神奇的数字,这意味着它可能会在某些设备上搞砸。 下面是代码的

  • 创建自定义按钮形状很容易完成,但是如何确保新形状也是按钮本身的“碰撞框”? 在本例中,我创建了两个 hexagnol 形状的按钮,并将它们正确对齐。问题是按钮的碰撞框仍然是矩形的,当您将鼠标从上部按钮移动到下部按钮时,您会注意到碰撞框是严格矩形的,并且使自定义形状变得毫无用处。 有没有办法创建自定义碰撞形状或碰撞检查? 完整的工作示例: