问题标签 [isometric]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
6 回答
128143 浏览

2d - 绘制等距游戏世界

在 2D 游戏中绘制等距图块的正确方法是什么?

我已阅读参考资料(例如this one),这些参考资料建议以一种将地图二维数组表示中的每一列锯齿形呈现的方式呈现图块。我想它们应该更多地以菱形方式绘制,在屏幕上绘制的内容与 2D 阵列的外观更密切相关,只需旋转一点。

两种方法都有优点还是缺点?

0 投票
3 回答
2382 浏览

math - 将屏幕上的点取消投影到等距投影的世界

我正在做一个幕后 3d 模拟,同时在我的 2d 等距引擎中渲染世界。我以前从未做过等距引擎,而且我的矩阵数学一般都生锈了,所以我遇到了问题。

我有一个投影矩阵,它最简单的形式是:

几个标志被翻转了,因为我的引擎坐标系在左上角是 0,0,+X 在右/东,+Z 在南。

现在,它的反面是:

现在,这些矩阵大部分都有效。

例如

WC: 500,0,500 =屏幕: -1.44、350、500(X 和 Y 正确)

WC: 0,0,500 =屏幕: -355、175、500 (X 和 Y 再次正确)

但是,现在如果你需要走另一条路,你不再有那个方便的 Z 值,所以

屏幕: -1.44、350、0 = WC: -2、-402.97、0(所以,垃圾。)

还有更多——一旦我不再拥有那个 Z 值,我就无法从屏幕坐标中检索世界坐标。

这里有什么解决方法?

编辑

我应该指出,取消项目的目的是为鼠标拾取获得光线..

似乎只是我对自己所做的事情的误解让我在这里搞砸了。

0 投票
3 回答
4664 浏览

2d - 在等距世界中的瓷砖之间移动精灵

我正在寻找有关如何在等距游戏世界中移动(和动画) 2D 精灵的信息,但是在从一个瓷砖到另一个瓷砖的旅行时让它们的运动平滑地动画,而不是让它们从一个瓷砖的范围内跳跃到下一个的范围。

这方面的一个例子是在运输大亨游戏中,火车和马车通常一半在一块,一半在另一块。

0 投票
4 回答
22438 浏览

c++ - 使用opengl进行真正的等距投影

我是使用 C++ 进行 OpenGL 编程的新手,数学不太好。有没有一种简单的方法来进行等距投影?

我的意思是真正的等距投影,而不是一般的正交投影。

(等距投影仅在单位 X、Y 和 Z 向量的投影长度相等且它们之间的角度正好为 120 度时才会发生。)

代码片段受到高度赞赏..

0 投票
3 回答
4521 浏览

iphone - 二维坐标系中的等距投影

在二维空间的等距平面上移动一个点需要什么方程?

我看过管子上的几个地方。主要是这里。我无法破译它。不幸的是,我不是数学专业的。

我需要做的是在由 10px 块组成的等距平面上将一个点从 (0,0) 移动到 (1,0) 或 (0,1)。在 normal-ville 中,我只会做 (x+10, y+0) 或 (x+0, y+10) 在我的 2d 平面上移动自己。

如果能提供更好的上下文,我的大部分工作都是在 iPhone 上的 Core Animation 中完成的。

感谢您的时间。

DP

0 投票
2 回答
2753 浏览

algorithm - 等距地图的准确 A* 搜索启发式?

我已经编写了 A* 搜索算法的实现。问题是我目前使用的启发式方法只能在方形网格上准确地工作。由于我的地图是等距的,因此启发式没有考虑地图的实际布局,因此也没有考虑单元格之间的距离。

更新:经过大量的日志记录和分析(读作花费大量时间试图找出平庸),我得出的结论是,我目前的启发式方法工作得很好,有一个小例外:最终结果与真正的直线相反对角线运动。

这意味着在等轴测sqrt(2)地图上,直线移动的成本实际上是对角线移动的数倍,它被计算为对角线移动的移动。问题是:如何修改我当前的启发式方法,以便为等距布局产生正确的结果?简单地替换为,反之亦然是行不通的。diagonalstraight

地图布局

0 投票
2 回答
683 浏览

isometric - 无法计算等距游戏的获取世界坐标函数的逆

我正在编写一个等距游戏,但不幸的是,我一直坚持使用用于从屏幕坐标映射回世界坐标的算法(反之亦然)。无论如何,我无法弄清楚与我的 GetScreenX/Y 方法相反的实现。这是一些代码。width 和 height 表示图块中视口区域的宽度/高度。

通过正确的实现,这应该可以顺利进行。您可以在 Linqpad 中运行它。

很抱歉不得不问,但我无能为力!

0 投票
1 回答
645 浏览

iphone - 如何在等距环境中移动计算抛出的物体路径?

我正在 iPhone 上制作等距游戏,需要一些帮助。计算一个物体从一块瓷砖扔到另一块瓷砖时必须走的路径的最佳方法是什么?我一直在研究使用 NSBezierPaths,但不能完全弄清楚如何将它们用于对象路径?任何帮助将不胜感激!

0 投票
1 回答
2555 浏览

vb.net - 在 Isometric 引擎中剔除屏幕外图块

对于一个大学学期项目,我正在研究一个使用等距显示的图形 roguelike(我知道术语:P 的矛盾)。我想弄清楚的是,由于绘制所有瓷砖非常昂贵且不必要,我想找出一种相对快速的算法来确定应该绘制哪些瓷砖以适合 NxMpx 窗口,因为瓷砖图形是 XxYpx。

我没有为此进行平滑滚动,所以这不是问题。我也不担心完美 - 一点不必要的抽奖很好,我只是不想绘制大量不会出现在游戏中的不必要的瓷砖。

0 投票
2 回答
2111 浏览

2d - 在 2D 横向滚动条中实现 z 轴

我正在制作一个类似于 Castle Crashers 的侧滚轴,现在我正在使用 SAT 进行碰撞检测。这很好用,但我想通过允许对象在屏幕上上下移动来模拟关卡“深度”,基本上沿着 z 轴(如这个截图http://favoniangamers.files.wordpress.com/2009/07 /castle-crashers-ps3.jpg )。这不是等距游戏,而是使用视差滚动。

我将 az 组件添加到我的矢量类中,并且我计划根据形状的“厚度”和它的 z 位置来剔除碰撞。我只是不确定如何计算渲染形状的位置或如何添加重力跳跃。随着 z 位置的变化,如何计算最大 y 值(对于地面)?基本上是 z 轴和 y 轴的关系让我感到困惑。

如果有人知道此主题,我将不胜感激资源链接。

谢谢!