0

我正在制作一个游戏,并且我喜欢为英雄的激光(以及未来的其他东西)实现光线投射,我将我的精灵放在一个精灵表中,我在开始时绑定它并在我绘制时访问,因为每个元素都知道如何绘制自己,但是 spritesheet 是 PNG,因此某些元素具有透明度,这在 openGL 中可以正常工作。我知道每个元素的位置、大小等,但如果某些精灵具有透明度,则位置和大小不足以使光线投射完美,因为它只会击中“边界框”。那么有没有一种方法可以使用 Bresenham 算法(我相信这是最轻的方法,如果我错了,请纠正我)并在 openGL 中使其像素完美,这样我就可以获取光线与实际非的碰撞点- 它出现的第一个精灵的透明区域?

4

1 回答 1

1

没有简单的方法可以做到这一点。您必须为您的光线投射创建一个自定义碰撞检查器,以查看它是否会通过或是否会与精灵的一部分发生碰撞。

然而,使用较小的边界框或圆圈来表示它可能是一个更好的主意,或两者兼而有之。这些计算起来更容易、更快,然后检查纹理中的每个像素。

于 2013-07-12T03:11:52.257 回答