【问题标题】:Detecting side of collision检测碰撞侧
【发布时间】:2019-03-25 11:59:04
【问题描述】:

我正在使用awt,它运行良好。但是,我需要检测一个物体撞击另一个物体的 side。对于矩形,这将是一个简单的数学运算,但是对于另一个形状(比如说文本),它就没有那么简单了。

例如,我有一个用箭头键移动的“播放器”(一个矩形形状),以及一个带有与文本匹配的碰撞框的文本(一个与文本匹配的形状)。

如果玩家进入字母之间,然后撞到字母的右侧,我希望将其区分为右侧,而不是左侧(就像矩形示例一样)。

我已经已经完成了碰撞检测,这不是问题。我想检测发生碰撞的(左、右、上、下)。

换句话说,如果有人制作了一个自定义形状,其中有两个矩形,但它们之间的中心是空白的,我想检测发生碰撞的面。所以,如果我在右侧有左侧矩形,我想知道我击中了右侧,如果我击中左侧的右侧矩形,我想知道我击中了左侧。

这可能吗?如果有,是否实用?

【问题讨论】:

  • 回答问题时,播放器和文本的定义方式等信息至关重要。请张贴minimal reproducible example 展示您想要实现的目标,以及这个问题与您的previous 问题的不同之处。
  • @c0der 我更新了播放器部分,但文本部分无关紧要。这是一个例子,我想用任何形状来做这个,我想也许我可以使用 awt 用来绘制形状的相同函数。而我之前的问题和这个无关?
  • “我想用任何形状做这个”是否意味着所有文本都是由Shape对象组成的?
  • 好的,很明显我在这里没有得到答案。这不是标记问题的重复,但我知道自己该怎么做。
  • DIY 永远是最好的。我把这个问题标记为太宽泛了。如果您希望得到答案,请提供所有相关信息。您可能需要tour 并查看How do I ask a good question?

标签: java awt java-2d


【解决方案1】:

我建议使用 hitbox 首先检测玩家是否在字母周围的矩形区域内,如果是 - 然后进行详细的碰撞检查。

您必须为每个字母创建一组特殊的形状对象以匹配其形状,其中每个形状都是简单的凸形,您可以对其进行轻松检查。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-03
    • 2014-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多