Questions tagged «2d»

2D是指二维空间,其中的坐标用X和Y值表示。


7
2D Platformer AABB碰撞问题
我的AABB冲突解决方法有问题。 我先解析X轴,然后解析Y轴,以解决AABB相交问题。这样做是为了防止此错误:http : //i.stack.imgur.com/NLg4j.png 当物体移入播放器且必须水平推动播放器时,当前方法可以正常工作。如您在.gif文件中所见,水平尖峰正确地推动了播放器。 但是,当垂直峰值移动到播放器中时,X轴仍将首先解析。这使得“将钉鞋用作升降机”是不可能的。 当玩家进入垂直尖峰(受重力影响而掉入)时,他被推向Y轴,因为开始时X轴上没有重叠。 我尝试过的方法是此链接的第一个答案中描述的方法:2D矩形对象碰撞检测 但是,尖峰和移动的对象是通过更改位置而不是速度来移动的,直到调用Update()方法之前,我才计算它们的下一个预测位置。不用说此解决方案也不起作用。:( 我需要以上述两种情况都可以正常工作的方式解决AABB碰撞。 这是我当前的碰撞源代码:http : //pastebin.com/MiCi3nA1 如果有人可以研究这个问题,我将非常感激,因为这个错误从一开始就一直存在于引擎中,并且我一直在努力寻找一个好的解决方案,但没有成功。这严重使我整夜都在看碰撞代码,并阻止我进入“有趣的部分”并对游戏逻辑进行编码:( 我尝试实现与XNA AppHub平台演示中相同的碰撞系统(通过复制粘贴大部分内容)。但是,“跳跃”错误发生在我的游戏中,而AppHub演示中没有发生。[跳虫:http : //i.stack.imgur.com/NLg4j.png ] 要跳,我检查播放器是否为“ onGround”,然后将-5添加到Velocity.Y。 由于玩家的Velocity.X高于Velocity.Y(请参见图中的第四个面板),因此onGround在不应该设置为true时设置为true,从而使玩家跳入半空中。 我相信这在AppHub演示中不会发生,因为播放器的Velocity.X永远不会高于Velocity.Y,但我可能会误会。 我先在X轴上解析,然后在Y轴上解析,从而解决了这个问题。但是,如上所述,这加剧了与尖峰的碰撞。


8
沿着贝塞尔曲线在两个行星之间移动飞船,但缺少一些加速方程
好的,我已经在math.stackechange.com上发布了这个,但是没有得到任何答案:( 首先是我的问题的图片,随后进行描述: 因此,我已经设定了所有要点和价值观。 船舶开始时P1以S=0.27 Degrees每game嗒作动绕左行星运动,到达时按照贝塞尔Point A曲线弯曲直到到达Point D,然后P2以S=0.42 Degrees每game嗒作动绕右行星航行。两者的区别在于S,行星绕行星的移动速度相同。 到目前为止一切顺利,我已经启动并运行了,现在是我的问题。 当S P1和S P2相差很大时,船在到达目的地时会在两种速度之间跳跃,这看起来很糟糕。所以,我需要加速的船Point A,并Point D从S P1到S P2。 我所缺少的是紫色,它们是: 一种计算滴答声的方法,其中考虑了加速度,船舶沿着贝塞尔曲线移动。 再次考虑加速度,一种基于T在贝塞尔曲线上找到位置的方法。 ATM I通过计算点之间的距离来计算贝塞尔N曲线的长度。因此,我认为我需要的是一种缩放比例的方法,该方法T需要根据加速度将其放入贝塞尔曲线计算中。
48 2d  mathematics 

4
如何将2D粒子渲染为流体?
假设您有一种很好的方式移动2D粒子以模拟流体(例如水)。关于如何渲染的任何想法? 这是用于2D游戏,其中的透视图是从侧面看的,就像这样。水将被包装在可以破碎的盒子中,以使其掉落并与其他物体相互作用。我想到的最简单的方法是为每个粒子使用小图像。我有兴趣听到更多提水的方法。
45 2d  particles  water 

6
OpenGL是否适合2D游戏?
我已经自学了一段时间的OpenGL库,并想开始制作游戏。但是,为了更简单的介绍,我想从2D开始,例如自上而下的Pokemon风格的游戏。 这是一个好计划,还是OpenGL专为3D设计?
44 opengl  2d 

8
如何学习2D动画?[关闭]
在哪里可以学习如何很好地制作简单的2D动画?还是真的只是在Photoshop中逐字地绘制某事物的每一帧?有技巧或窍门吗?帮助入门的教程? 另外,有哪些软件选项(最好是开源的,甚至只是免费的)?
43 2d  animation 

6
您将如何在2d平台机中处理不同的长宽比?
很久以前,4:3几乎是您在PC上找到的唯一纵横比。今天,最常见的显示器是16:10,但是大多数新显示器(尤其是笔记本电脑)是16:9 我正在写一个2D平台游戏,但我无法决定如何处理所有不同的比率。 这里有一些想法: 4:3获得更多内容,宽屏在顶部和底部切割 16:9获得更多内容,其他内容则左右切 游戏为16:9,其他AR带有黑色水平条 游戏为4:3,其他AR带有黑色竖线
41 2d  aspect-ratio 

5
允许玩家“染色”图像而不损失色彩质量的最佳方法?
我正在创建一个2.5D等距(2D图像)游戏。 我希望玩家能够“染色”他们的盔甲,衣服和其他东西。我发现对所有事物进行灰度缩放会导致某些“更自然”的着色丢失。例如,制作具有红色/黄色灰度的龙,然后应用覆盖颜色,将导致纯红色龙,而所有辅助颜色都将丢失。同时,染上相同的红色/黄色龙蓝色,使其看起来很不错。 我游戏中的角色没有各种各样的设备。游戏更接近《英雄联盟》如何处理角色和图形。角色可能只有一种类型(例如,英雄),但角色可以有多种服装作为选择。我希望玩家能够在有限数量的“服装”和角色中进行尽可能多的自定义。 因此,我希望玩家能够选择角色,选择几种武器之一,在少数服装选择之间交替(分层放置在角色上),然后将大部分东西都染上颜色(为武器选择特定的金属色,选择任何颜色根本没有服装)。 如果我能够使用灰度而不丢失某些颜色,那我会。 这是关于我在说什么的示例: 不管我在Photoshop的“颜色叠加”选项中使用什么,都不可能“染色” Dragon。显然,如果可以使用灰度更好地为其着色,那我做错了。对于绿色或黄色或较浅的紫色,可以正常工作。对于任何其他颜色,它都破坏了艺术品。 但是,如果我不对其进行灰度处理,则看起来要好得多,而只需对原始(红色/黄色)图像应用“色调”颜色即可。 红色调 紫色色调 现在,玩家可以将Dragon ANY染成彩色,并且看起来仍然很棒!(黄色变成白色,而红色变成彩虹的任何颜色。) 这是否意味着WHITE或BLACK是最好的辅助色?然后使用某种方法或着色器将白色(辅助)颜色更改为其他颜色? 是否有任何文章介绍这种拍摄单个图像的复杂方法,并根据着色方法对不同像素进行染色? 对于龙来说,它最适合作为白色/黑色高对比度龙吗?红色/黄色是最佳颜色设置吗?事实证明,图像比我尝试过的其他几种颜色要好得多。灰度仍然优越吗? Photoshop的“混合选项”是否不包括为视频游戏适当地“染色”图像的方法?是否有复杂的着色器/方法可以使我获得更大的成功? 注意:如果GrayScale允许我减少图像的RAM消耗,或防止有损压缩过程中的质量损失,那是我会认真考虑的事情。

5
游戏中的演员应该负责吸引自己吗?
我对游戏开发非常陌生,但对编程却不是。 我(再次)使用JavaScript的canvas元素在玩Pong类型的游戏。 我创建了一个Paddle具有以下属性的对象... width height x y colour 我也有一个Pong具有诸如...的属性的对象 width height backgroundColour draw()。 该draw()方法当前正在重置canvas,这就是出现问题的地方。 如果Paddle对象具有draw()负责其绘制的方法,或者draw()该Pong对象的负责负责其演员的绘制(我认为这是正确的术语,如果我不正确,请更正我)。 我发现在Paddle实例化两个对象Player和时,绘制自身会很有利Enemy。如果在没有Pong的draw(),我需要两次写类似的代码。 最佳做法是什么? 谢谢。

6
我们如何解决2D游戏中大视频存储需求?
我们如何解决2D游戏中大视频存储需求? 我们正在开发使用Allegro C / C ++的2D游戏(Factorio),并且随着游戏内容的增加,我们面临视频存储需求增加的问题。 目前,我们收集了有关将首先使用的图像的所有信息,尽可能地裁剪所有这些图像,并尽可能紧密地将它们组织成大图册。这些地图集存储在视频内存中,视频内存的大小取决于系统限制。目前,它通常是2张图像,最高可达8192x8192,因此它们需要256Mb至512Mb的视频内存。 这个系统对我们来说非常不错,因为通过一些自定义优化以及拆分渲染和更新线程,我们能够以60 fps的速度在屏幕上绘制成千上万的图像。我们在屏幕上有许多对象,因此允许大缩放是一项关键要求。由于我们要添加更多内容,因此视频内存要求会出现一些问题,因此该系统无法容纳。 我们想要尝试的一件事是拥有一张包含最常见图像的地图集,而第二幅则作为缓存。图像将根据需要从内存位图移到那里。这种方法有两个问题: 从内存位图到视频位图的绘制速度非常缓慢。 在Allegro中,除了主线程之外,无法使用视频位图,因此实际上是不可用的。 这是我们还有的一些其他要求: 游戏必须是确定性的,因此性能问题/加载时间永远不能改变游戏状态。 游戏是实时的,并且很快也会成为多人游戏。我们需要不惜一切代价避免甚至最小的结结巴。 游戏的大部分是一个连续的开放世界。 该测试包括批量绘制1万个精灵,大小从1x1到300x300,每种配置几次。我在Nvidia Geforce GTX 760上进行了测试。 当源位图在各个位图之间没有变化时(图集变体),视频位图到视频位图的绘制每个子图花费0.1us。大小没关系 视频位图到视频位图图形,而源位图在图形之间切换(非图集变体),每个子图形花费0.56us;大小也没关系。 内存位图到视频位图的绘制确实令人怀疑。从1x1到200x200的大小每个位图要花0.3us,所以速度并不是那么慢。对于较大的尺寸,时间开始急剧增加,201x201的时间为9us,291x291的时间为3116us。 使用Atlas可将性能提高5倍以上。如果我有10ms的渲染时间,则使用Atlas将每帧限制为100000个精灵,如果没有它,则限制为20000个精灵。这将是有问题的。 我还试图找到一种方法来测试阴影的位图压缩和1bpp位图格式,但是我无法找到在Allegro中执行此操作的方法。

7
学习创造更好的艺术(2D游戏)
在我的其中一款游戏“大放异彩”之前,或者我被金锭淹没之前,我将不得不自己处理大部分或全部游戏美术。我的问题的症结在于:我如何学习足够的艺术,以超越“程序员艺术”,并成为我真正引以为傲的东西? 我的问题的重点是2D,而不是3D。 我已经掌握了: Photoshop / GIMP(图像处理和创建) Flash(动画和绘画简单艺术) 简单绘图(手工绘制) 数字化手绘艺术 平面设计 但是,游戏需要复杂多样的艺术作品。从背景到图标,精灵,动画和复杂效果的任何事物。 在艺术上,我如何弥合差距?我已经有经验和信心可以做到。我只需要知道我的谦虚努力的方向。我知道这会有所收获,特别是从长期来看。但是我不确定如何到达那里。 我已经做过使用现有艺术品的事情,因此请不要在您的问题中提及。
40 2d  art 

6
快速移动物体的六角形碰撞检测?
对象具有位置和速度矢量。通常仅使用该位置来检查两个物体是否发生碰撞,这对于移动速度非常快的物体是有问题的,因为可能发生物体移动得如此之快,以至于在第一次碰撞检查中它位于第一个物体的前面,而在第二个碰撞检查中位于它的后面第二次碰撞检查。 现在,还有基于行的碰撞检查,其中您仅检查每个对象的运动矢量是否与另一个对象的边界框相交。这可以看作是一点的扩展。这仅在快速移动的物体很小的情况下才有效。 所以我的想法是,为什么不扩展矩形而不是扩展点?这将产生一个六边形。 现在,到目前为止一切顺利。但是我实际上如何检查两个这种六角形是否相交?请注意,这些是非常特殊的六角形。 奖励问题:是否可以计算出碰撞发生的确切位置(或确切地说,经过多少时间)?这对于检测实际发生的情况(例如在何处以及具有多少功率)以及模拟它们在碰撞到帧结束之间的时间中如何移动非常有用。

1
直接在XNA中渲染SVG艺术作品
假设我有一堆矢量化格式的2D艺术作品,例如SVG。是否有一种简便易行的方法可以直接渲染而不需要自己实现完整的SVG渲染器? 当然,我可以离线(例如在内容管道中)对其进行光栅化,以实现不同的分辨率/缩放级别,但是我想在矢量图形提供的连续缩放级别上保持清晰的视觉效果。
36 xna  2d  graphics  art  vector-art 

2
如何以程序方式渲染不规则形状的保健棒?
传统的矩形或基于心脏的健康栏的问题已得到很好的理解,并且很容易解决。但是,像我在下面制作的样机那样,更“创意形状”的健康条的公认解决方案是什么? 这样做的明显方法是让“精灵”处于“中间”状态,因此第三个图像将是它自己的精灵,以及许多其他针对不同级别的健康的过渡。但是,这似乎非常微不足道,在健康状态之间建立平稳过渡所需的中间次数将很大。 我唯一能想到的想法是将“完全健康”子图覆盖在“空健康”子图和预先烘焙的像素坐标集上,以代表每个健康点,然后使它们像健康一样不透明或透明上升或下降。 我希望这个问题与语言和平台无关,但如果有帮助,可以随时以任何语言/库/框架提供具体示例。
35 2d  graphics 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.