java如何检查两个矩形是否从左、上或右接触
我正在使用JavaAWT库
我正在做一个简单的游戏,我有一个球员和敌人的矩形。然后我设置它们的边界,这样我就可以对它们使用intersect函数
现在我想看看玩家和敌人是如何接触的。见附件
玩家接触敌人的方式主要有四种。见附件。现在,如果玩家从顶部接触敌人,我就进入“如果”状态。但如果玩家从左边或右边碰到敌人,我就想进入“其他”状态。我写了下面的代码,但它不起作用。由于某种原因,它总是进入其他状态
我在想可能还有其他功能我可以使用
if (player.getBounds().intersects(enemy.getBounds())) {
if (playerY + playerHeight <= enemy.getY()) {
//player touch enemy from top
} else {
//player touch enemy from left or right
}
}
# 1 楼答案
可能不是最好的解决方案,但它符合我的要求。谢谢
# 2 楼答案
首先检查矩形,看它们是否相交。十字路口并不“触碰”。当它们有一个公共矩形不是空的时候
例如,以下两个矩形不相交:
但是请注意
a.y
(100)+a.height
(200)正好是b.y
(300)当然,如果
a
在b
之上,比如说,它的y
是99,那么a.y
+a.height
比b.y
小所以在所有
a.y + a.height <= b.y
的情况下,矩形不相交因为只有在矩形相交的情况下才进入
if
,所以最终总是会进入else
如果您想检查它们是否有轻微的重叠,您可以将条件更改为
<^ >其中{{CD14>}是一个常量,表示你认为“触摸”重叠的大小。playerY + playerHeight == enemy.getY() + 1
,甚至如果你想看到它们在没有重叠的情况下接触,你不能使用
intersects
方法