我正在用 Java 制作一个 2D 等距引擎,我想是因为我喜欢受苦。不管怎样,我正在进入碰撞检测,但遇到了一些问题。
游戏中的角色不限于在图 block 之间移动 - 他们可以自由移动。我的问题是,我不确定如何阻止玩家与 crate 等碰撞,而不拒绝他们访问图 block 。
例如,假设 crate 位于图 block 的 0.5 处,然后 crate 的其余部分位于图 block 之外,我希望玩家能够移动到图 block 的空闲 0.5 处整个图 block 被阻塞。
我遇到的问题是我不确定如何估算对象足迹的大小。使用图像的尺寸效果不太好,因为游戏空间中对象的“高度”会转化为图像占用的额外地板空间。
我应该如何估计物体的大小?请注意,我不需要像素完美的检测。菱形就可以了。
我很乐意提供您可能需要的任何代码,但这似乎是一个数学问题。
最佳答案
从 Sprite 的边界矩形中,您可以推断出适合其内部的菱形的高度,但您无法精确确定地板上的两个尺寸,因为每个维度对 Sprite 的宽度和高度的贡献相等。但是,如果您假设菱形正方形的底边,那么您也可以确定其边长。
如果 Sprite 的宽度为 W
像素,高为 H
像素,则菱形的正方形底边的边长为 W/sqrt(3)
菱形的高度将为 H - (W/sqrt(3))
。 This image of some shapes in isometric projection有助于理解这些公式为何有效。
关于java - 查找等距实体的足迹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14371939/