java - 查找等距实体的足迹

标签 java math collision-detection game-physics isometric

我正在用 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/

相关文章:

java - 使用 ArrayList 以外的东西

java - 为什么Java中的String.hashCode()会有很多冲突?

java - 在面板中排列项目

java - 为什么Java在float计算后显示额外的值?

javascript - 不到一分钱怎么铺地板,否则不要

scala - 在 Scala 中找不到 BigInt 的 intValueExact

Java 乒乓球在桨上滑动

java - 匹配的通配符是严格的,但找不到元素 'mvc:annotation-driven' 的声明。标准包装器.Throwable

c# - Unity - 如何让游戏对象在碰到两个碰撞器时只发生一次碰撞

c++ - 从游戏中的可移动空间中删除矩形