早上好
在过去的几个月里,我一直在修补 HTML5 Canvas API,并且从中获得了很多乐趣。
我逐渐创建了一些小游戏,纯粹是为了自学游戏开发的注意事项。我现在能够进行基本的碰撞检测,即圆圈和平台之间的碰撞(对于大多数人来说相当简单,但当你第一次让它工作时感觉是一个相当大的成就,当你理解什么时甚至更好实际上正在进行中)。我知道像素碰撞检测并不适用于所有游戏,因为在许多情况下,您可以使用上述方法获得足够好的结果,而这种方法显然在资源上非常昂贵。
但我只是灵机一动(很可能其他人已经想到了这一点,我正在深入研究这个领域,但我用谷歌搜索了一下,但一无所获)......所以这里......
是否可以使用/利用 Canvas 的“globalCompositeOperation”功能。我最初的想法是将它的方法设置为“异或”,然后检查 Canvas 上所有像素的透明度,如果发现一个像素,则必须发生碰撞。正确的?显然,在这一点上,您需要弄清楚所讨论的像素被哪些对象占用以及如何使用react,但对于其他技术,您必须这样做。
是说 Canvas 已经在幕后进行碰撞检测,以便计算形状何时重叠?是否可以在此基础上进行扩展?
有什么想法吗?
加里
最佳答案
Canvas 不会自动执行此操作(可能是因为它仍处于起步阶段)。 easeljs对鼠标进入/离开事件采用这种方法,但极度效率低下。我正在使用一种算法方法来确定界限。然后我用它来查看鼠标是在形状内部还是外部。理论上,要以这种方式实现命中检测,您所要做的就是获取两种形状的所有点,看看它们是否曾经处于另一种形状。如果您想查看我的一些代码,请告诉我
不过,我要说的是,虽然你的方法效率很低,但它是全局适用于任何形状的。
关于javascript - HTML5 Canvas 碰撞检测 "globalCompositeOperation"性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8848035/