与图像碰撞(不规则形状)
Collision with image (irregular shape)
我目前正在制作 flappy bird,我将其从矩形更改为我自己的图像等。我似乎无法弄清楚该怎么做,所以当鸟(不规则形状)撞到矩形时,它就死了。当它是一个奇怪的形状时,我不知道如何编写碰撞代码。这是一张图片。小鸟我是这样画的
var img = document.getElementById("bird");
brush.drawImage(img, 20, this.y);
附件是游戏、小鸟和代码的图片。
这是一本关于这个主题的好书:
2D 游戏碰撞检测:游戏中几何碰撞的介绍
作者:托马斯·施瓦茨
如果你能处理矩形碰撞,尽量填满你复杂的形状
用矩形绘制图形并测试每个矩形。在你的情况下,试着用一个圆圈来代表鸟。
您需要实施碰撞器。他们已经准备好在 game-engines 这样的 Unity 中使用,但是如果你想自己实现这个,请考虑以下几点:
- 为您的鸟和墙壁创建碰撞器组件。 Collidiers 是简化的形状,使碰撞检测算法在 CPU 速度方面更容易和更快。例如,对于鸟来说,它可以是围绕它的圆圈,而对于你的墙壁来说,它可以是矩形。
- 在您的更新框架事件期间,检查您的鸟边界圆是否与墙矩形相交。这是简单的数学,您可以在 google 中找到 "circle rectangle intersection" 的公式。
- 如果检测到碰撞 - 你的鸟应该坠落)
就是这样!
我目前正在制作 flappy bird,我将其从矩形更改为我自己的图像等。我似乎无法弄清楚该怎么做,所以当鸟(不规则形状)撞到矩形时,它就死了。当它是一个奇怪的形状时,我不知道如何编写碰撞代码。这是一张图片。小鸟我是这样画的
var img = document.getElementById("bird");
brush.drawImage(img, 20, this.y);
附件是游戏、小鸟和代码的图片。
这是一本关于这个主题的好书: 2D 游戏碰撞检测:游戏中几何碰撞的介绍 作者:托马斯·施瓦茨
如果你能处理矩形碰撞,尽量填满你复杂的形状 用矩形绘制图形并测试每个矩形。在你的情况下,试着用一个圆圈来代表鸟。
您需要实施碰撞器。他们已经准备好在 game-engines 这样的 Unity 中使用,但是如果你想自己实现这个,请考虑以下几点:
- 为您的鸟和墙壁创建碰撞器组件。 Collidiers 是简化的形状,使碰撞检测算法在 CPU 速度方面更容易和更快。例如,对于鸟来说,它可以是围绕它的圆圈,而对于你的墙壁来说,它可以是矩形。
- 在您的更新框架事件期间,检查您的鸟边界圆是否与墙矩形相交。这是简单的数学,您可以在 google 中找到 "circle rectangle intersection" 的公式。
- 如果检测到碰撞 - 你的鸟应该坠落)
就是这样!