与图像碰撞(不规则形状)

Collision with image (irregular shape)

我目前正在制作 flappy bird,我将其从矩形更改为我自己的图像等。我似乎无法弄清楚该怎么做,所以当鸟(不规则形状)撞到矩形时,它就死了。当它是一个奇怪的形状时,我不知道如何编写碰撞代码。这是一张图片。小鸟我是这样画的

var img = document.getElementById("bird");
brush.drawImage(img, 20, this.y);

附件是游戏、小鸟和代码的图片。

这是一本关于这个主题的好书: 2D 游戏碰撞检测:游戏中几何碰撞的介绍 作者:托马斯·施瓦茨

可以找到,例如这里 http://www.amazon.de/2D-Game-Collision-Detection-introduction/dp/1479298123/ref=sr_1_1?ie=UTF8&qid=1448932508&sr=8-1&keywords=2d+collision

如果你能处理矩形碰撞,尽量填满你复杂的形状 用矩形绘制图形并测试每个矩形。在你的情况下,试着用一个圆圈来代表鸟。

您需要实施碰撞器。他们已经准备好在 game-engines 这样的 Unity 中使用,但是如果你想自己实现这个,请考虑以下几点:

  1. 为您的鸟和墙壁创建碰撞器组件。 Collidiers 是简化的形状,使碰撞检测算法在 CPU 速度方面更容易和更快。例如,对于鸟来说,它可以是围绕它的圆圈,而对于你的墙壁来说,它可以是矩形。
  2. 在您的更新框架事件期间,检查您的鸟边界圆是否与墙矩形相交。这是简单的数学,您可以在 google 中找到 "circle rectangle intersection" 的公式。
  3. 如果检测到碰撞 - 你的鸟应该坠落)

就是这样!