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

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

太叔昊穹
2023-03-14

我目前正在制作松软的小鸟,我把它从矩形改成了我自己的图像等等。我似乎不知道该怎么做,当鸟(不规则形状)撞到矩形时,它就死了。当碰撞的形状很奇怪时,我不知道如何编写碰撞代码。这是一张图片。我把鸟画成这样。

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

附上游戏的图片,鸟,和代码。

共有2个答案

秋飞鸾
2023-03-14

这是一本关于这个主题的好书:《2D游戏碰撞检测:游戏中碰撞几何的介绍》,作者:Thomas Schwarzl

可以在此处找到http://www.amazon.de/2D-Game-Collision-Detection-introduction/dp/1479298123/ref=sr_1_1?ie=UTF8

如果你能处理矩形碰撞,试着用矩形填充你的复杂图形,并测试每一个矩形。在你的情况下,试着用一个圆来画鸟。

闾丘选
2023-03-14

您需要实现对撞机。它们已准备好在 Unity 等游戏引擎中使用,但如果您想自己实现它,请考虑以下几点:

  1. 为鸟和墙创建碰撞器组件。碰撞器是简化的形状,使碰撞检测算法在CPU速度方面更容易、更快。例如,对于鸟来说,它可以绕着它转,墙可以是矩形
  2. 在“更新帧”事件期间,请检查鸟的边界圆是否与墙矩形相交。这是一个简单的数学,你可以在谷歌上找到“圆-矩形相交”的公式
  3. 如果检测到碰撞-您的鸟应该坠落)

就是这样!

 类似资料:
  • 我知道如何检查一个圆是否要与一个正方形相撞,我知道如何检测一个正方形是否要与一个正方形相撞,但是如果一个多边形要与一个正方形相撞,我该如何检测呢? 或者更好的是,当一个多边形将要与另一个多边形碰撞时。 或者更好的是,当由非直线组成的形状与另一个类似的形状(多边形或圆形/矩形)发生冲突时 有什么方法可以得到一个图形可能占用的像素和另一个图形可能占用的像素,并检查它们是否相同? 我希望有一些解决方案不

  • 我有一个问题,碰撞检测一个圆和一个矩形。我曾尝试用勾股定理来解决这个问题。但所有查询都不起作用。矩形与圆的矩形包围盒发生碰撞。

  • 我如何有效地检测图像层和生成的形状之间的冲突? 我需要一种快速而全面的方法来检测可旋转图像层和生成的形状之间的碰撞。 到目前为止,我只是将图像分割成一系列包含大多数像素的圆圈,然后根据其他形状测试每个圆圈。为了提高性能,我在每个结构周围创建了周界圆,只测试这些较大的圆,直到两个结构足够接近可以碰撞为止。 真正的问题是,很难将一个可旋转的矩形碰撞成这些图像结构之一。用圆形填充矩形似乎也没有效率。更不

  • 当前有三种类型的碰撞形状: 圆形:快速简单的碰撞形状 线段:主要作为静态形状。可以倾斜以便给之一个厚度。 凸多边形:最慢,但却为最灵活的碰撞形状。 如果你愿意,你可以在一个刚体上添加任意数量的形状。这就是为什么两种类型(形状和刚体)是分离开的。这将会给你足够的灵活性来给相同对象的不同区域提供不同的摩擦力、弹性以及回调值。 当创建不同类型的形状的时候,你将永远得到一个cpShape*指针返回。这是因

  • 我正在编写一个游戏,涉及碰撞的一个移动的圆,由用户控制,和一个移动的矩形,由计算机控制。 完整的代码可以在这里找到:游戏 我在圆和矩形之间的碰撞检测方面遇到了麻烦。当矩形是静态的,碰撞检测工作完美。当圆和矩形的边缘在任一边接触时,程序就会按照它应该的方式进行操作。 这是碰撞检测功能。 谢谢。

  • 问题内容: 我找到了像素完美碰撞检查的代码,并在我的代码中使用了它: 它运行完美,从来没有任何问题。直到我使用以下代码将图像设置为Config_Alpha_8为止(由于ram问题): 为什么什么都不会发生,它确实被CollisioDetected装入了,我已经检查了日志!但是它不会检测到冲突。有人可以使用config_alpha_8提供工作功能来检查位图的像素完美冲突吗? 问题答案: 在具有ALP