我正在努力用Java制作2D等距引擎,因为我喜欢受苦。无论如何,我正在进行碰撞检测,而且我遇到了一些问题。
游戏中的角色不限于从一块瓷砖到另一块瓷砖的移动 - 它们可以自由移动。我的问题是,我不确定如何阻止玩家与一个箱子相撞,而不会拒绝他们访问该牌。
例如,假设箱子放在.5的瓷砖上,然后其余的箱子离开了瓷砖,我希望玩家能够继续前进到免费的.5瓷砖而不是整个瓷砖被阻挡。
我遇到的问题是我不确定如何估算物体足迹的大小。使用图像的尺寸不能很好地工作,因为对象的高度"在游戏空间中转换为图像占用的额外空间。
我应该如何评估物体的大小?记住,我不需要像素完美检测。菱形可以正常工作。
我很乐意提供您可能需要的任何代码,但这似乎是一个数学问题。
答案 0 :(得分:0)
从精灵的边界矩形中,您可以推断出适合内部的菱形的高度,但是您无法精确确定地板上的两个尺寸,因为每个尺寸对精灵的宽度和高度的贡献相等。但是,如果你假设菱形方块的底部,那么你也可以确定它的边长。
如果精灵的宽度为W
像素且H
像素高,则菱形的正方形底边为W / sqrt(3)
,菱形的高度为{{1} }。 This image of some shapes in isometric projection可以帮助您了解这些公式的工作原理。