【问题标题】:Detect Collision of rectangle and hide one of them检测矩形碰撞并隐藏其中一个
【发布时间】:2015-12-27 17:40:32
【问题描述】:

我正在尝试开发一个简单的 2D 游戏。其中我有多个计时器的矩形。我想在我的自定义视图中检测矩形的碰撞。我为两个矩形使用了多个计时器。我希望其中一个矩形在碰撞后消失一段时间。我在堆栈溢出和谷歌上搜索了很多,但找不到关于我的查询的完美答案。 请帮忙。提前致谢。

【问题讨论】:

    标签: android canvas touch-event ondraw


    【解决方案1】:

    矩形的碰撞检测非常简单。基本上,如果 X、Y 范围有任何重叠,那么它们就会发生碰撞。所以只需做一个矩形相交检查。

    大多数地方都有 Rect 和 Rectangle 类(这是 RectF.intersect() )。

            return a.left < b.right && b.left < a.right
                && a.top < b.bottom && b.top < a.bottom;
    

    您可能会变得比这更复杂,尤其是当速度成为问题时。或者当其中一个矩形可能在滴答声期间穿过另一个矩形但不与滴答声相交时。

    【讨论】:

    • 感谢@Tata​​rize 的帮助。我会试试的。将矩形隐藏一段时间怎么样。你对此有什么想法吗?
    • 只需以编程方式执行,我假设它们是给定类的对象,不要绘制它们或对它们进行 X 滴答声的碰撞检测。
    • 我实际上是在绘制(在自定义视图中使用画布)它们而不是制作对象。这样做有什么坏处吗?
    • 不,无论您将数据存储在什么位置。无论如何,它们都是对象。即使您将它们存储为几个浮点数。只是不要为 X 刻度画它们。这意味着您需要了解有关矩形的信息,即它们在哪里、方向、颜色、它们是否被绘制,然后不要在一定数量的刻度内绘制它们。因此,您只需递减并比较每个刻度,然后不要将其绘制在给定范围以下。即使作为一个独立的类,你最终也会做同样的事情,它只是让代码更容易。
    • 是的,你可能需要一个固定的计数器和它们的各个方面,所以最好是独立的类。然后让绘图例程和碰撞例程检查某个设定值是否高于零。然后每次滴答作响时减少它。当事情发生碰撞时,将其设置为您希望它不被绘制(或碰撞)多长时间的值。让它具有绘图功能并将对象交给画布并不难。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-12
    • 2016-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多