问题标签 [2d]

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 投票
3 回答
10834 浏览

java - 如何在 Java 中为 2D 游戏构建平铺地图?

不知道如何解决这个问题。

基本上,我想要一个 Pixel -> Tile 表示 400x400 窗口。屏幕上的每个坐标,例如120x300应该是图块的一部分。我最小的精灵是 4 个像素,所以我们可以说 1 个图块 = 4 个像素。玩家和敌人的精灵都是 20 x 20,因此每个玩家/坏人将占据 5 个格子。

然后我想用这个 Map 类来:

  • 通过提供图块的索引/id 来检索玩家/怪物精灵的 x/y 坐标。

  • 知道边界在哪里,所以它不会将精灵移动到 之外400x400,从而隐藏它。

  • 碰撞检测,知道瓷砖是否空置。

如何才能做到这一点?在这里专门讨论 x,y->tile 或 tile index->​​x,y 转换(用于适当地绘制精灵)。

0 投票
4 回答
3200 浏览

algorithm - 球体表面上的射线-多边形交点

我有一个点(纬度/经度)和一个以度数为单位的航向(真北),该点正沿着该点移动。我有许多静止的多边形(点在纬度/经度中定义),它们可能是凸面的,也可能不是凸面的。

我的问题是,如何计算与多边形最近的交点(如果有)。我看过一些关于光线追踪的令人困惑的帖子,但是当光线和多边形不在同一个平面上并且多边形必须是凸面时,它们似乎都与 3D 有关。

0 投票
1 回答
2615 浏览

c++ - 为什么 glCopyTexSubImage2D 不能正确复制我的正方形?

这里是输出: http: //i43.tinypic.com/9a5zyx.png 如果事情按照我想要的方式工作,左边正方形的颜色将匹配右边正方形的颜色。感谢有关该主题的任何帮助

0 投票
6 回答
26690 浏览

math - 简单的基于物理的运动

我正在开发一个 2D 游戏,我正在尝试使用一些基本的物理代码将对象加速到最高速度。

这是它的伪代码:

这是一种非常简化的方法,不依赖于质量或实际摩擦(代码中的摩擦只是作用于运动的通用力)。它和“速度 *= 摩擦力”一样有效;部分防止速度超过某个点。然而,正是这个最高速度以及它与加速度和摩擦的关系让我有点迷茫。

我想做的是设置一个最高速度,以及达到它所需的时间,然后用它们来推导出加速度和摩擦值。

IE,

0 投票
4 回答
13625 浏览

iphone - 在 iPhone 的 Quartz 2D 中进行旋转变换时,我可以移动原点吗?

抱歉,如果这很明显或在其他地方被覆盖,但我整天都在谷歌上搜索,还没有找到真正有效的解决方案。

我的问题如下:我目前正在全屏 UIView 中绘制图像,例如,我们会说图像在 UIView 的右下角。我想在该图像的中心进行旋转变换(CGAffineTransformMakeRotation),但是,默认情况下,旋转命令围绕它自身的 UIView 的中心旋转。结果,当我旋转时,我的图像会在屏幕上移动,而不是停留在原地并围绕自己的中心旋转。

根据我收集到的信息,我需要翻译我的上下文,以便原点(UIView 的中心)位于我的图像中心,旋转,然后通过翻译回原始位置来恢复上下文。

以下是我最接近的工作,但问题是图像旋转时,它在旋转时向下移动。我认为这是由动画补间第一步翻译和第三步翻译引起的,而不是仅仅意识到翻译的起点和终点是相同的......

我也尝试过 CGContextTranslateCTM 和 CGContextSaveGState/UIGraphicsPushContext 之类的东西,但这些似乎效果不大。

我已经为此奋斗了好几天,我目前的解决方案似乎很接近,但我不知道如何摆脱这种翻译补间。有没有人对此有解决方案或更好的方法来解决这个问题?

[更新] 目前我正在以 UIview 的中心为中心绘制我的图像,然后将 UIView.center 属性设置为我想要旋转的原点,然后执行旋转命令。看起来有点像 hack,但在我得到真正的翻译工作之前,这是我唯一的选择。谢谢!

0 投票
1 回答
1180 浏览

c++ - 角拼接数据结构,任何开源实现?

我记得几年前学习过拐角缝合的数据结构,从那时起就对它着迷。它起源于Ousterhout 的一篇论文

我已经搜索但无法找到免费/开放的实现。我更喜欢 C++ 实现,但此时会接受人们可能拥有的任何指针。

注意:角缝合数据结构是一种存储二维矩形数据的方法,显式维护插入元素之间的空白。这与只存储插入的数据元素的四叉树相反。有很多权衡,我最感兴趣的是实现——但也会接受具有相似属性的替代方案。

0 投票
3 回答
13725 浏览

c - 在 C 中实现 2D 卷积的快速方法

我正在尝试实现一种视觉算法,其中包括一个带有 9x9 拉普拉斯高斯滤波器的预滤波阶段。你能指出一个简要解释快速过滤器实现的文档吗?我认为我应该使用 FFT 进行最有效的过滤。

0 投票
2 回答
4473 浏览

iphone - 我应该如何在 iPhone 上做多个动画?

我想为一个游戏制作多个部分的动画,并且我想让这些部分朝不同的方向移动,这样我当前为整个视图制作动画的方法将不再有效。

我想知道一次为多个项目设置动画的最佳做法是什么。(注意我在 2d 中渲染,所以我目前对 3d 解决方案不感兴趣。)

谢谢!

0 投票
6 回答
3979 浏览

c++ - 计算两条边的交点

我有这个二维空间中边和顶点的大图。大图由 C++ 库中计算的函数返回。我正在阅读此图并使用它来计算其边缘的所有交点(线段)。我使用扫描算法。为了检测两条边的交点,我遇到了一些问题。我有 4 种不同的方法,根据这些方法我测试两条边是否相交,如果是肯定的,我计算并保留它们的交点:

  1. 一种测试两条边是否是多边形的对角线。即插入另一条线方程的一条线的边缘坐标具有不同的符号。

  2. 一种每次计算交点并检查找到的交点是否在两个线段的端点之间。

  3. 一个是来自这个链接的代码,它是用 C++ 实现的。

  4. 一个实现了 Jason Cohen 在 这个问题中提出的第一种方法。

“问题归结为这个问题:从 A 到 B 和从 C 到 D 的两条线是否相交?然后你可以问四次(在这条线和矩形的四个边之间)。

这是执行此操作的矢量数学。我假设从 A 到 B 的线是有问题的线,从 C 到 D 的线是矩形线之一。我的符号是 Ax 是“A 的 x 坐标”,Cy 是“C 的 y 坐标”。而“*”表示点积,例如:

这个 h 数是关键。如果 h 在 0 和 1 之间,则线相交,否则不相交。如果 F P 为零,您当然无法进行计算,但在这种情况下,线是平行的,因此仅在明显的情况下相交。确切的交点是 C + F h。如果 h 恰好为 0 或 1,则线在端点处相接。你可以认为这是一个“交叉点”,也可以不是你认为合适的。”

对于我创建的数据(具有双值的小数据),我使用所有 4 种实现的方法都获得了很好的结果。当我对大图中的数据使用用 C++ 实现的这些方法中的任何一种时,我每次都会得到不同的结果,而且结果都不好:

  1. 方法返回更多我需要的交点(所有点都在图表上),但我得到的点太多。

  2. 无论如何,我总是获得 0 个交叉点。

  3. 我得到的交叉点比 1 多得多。

  4. 对于某些示例,我得到不在图表上的点(因此甚至没有交叉点)。但是对于一些例子,我得到了交点加上其他一些点。

我不知道问题出在哪里。任何关于如何计算交集并对其进行测试的建议或任何其他想法都非常受欢迎。谢谢你,马达琳娜

0 投票
7 回答
23202 浏览

xna - XNA 2D 游戏引擎

我刚刚回到游戏开发领域,我对 XNA 印象深刻。我唯一的问题是我想要一个基于社区的免费2d 游戏引擎,以便我可以利用社区的力量。有谁知道目前正在支持的优秀 XNA 2d 游戏引擎,还是我只需要自己编写一个?