Questions tagged «2d»

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


2
洛克人风格的屏幕滚动设计
NES经典的《漫画人》系列使用了非常特殊的滚动技术,我很难将精力集中在实现上。本质上,该级别分为大小均相同的“屏幕”。一些屏幕可以平滑地彼此滚动,从而产生了更广阔的游戏领域的幻觉。某些屏幕会阻止相机滚动,直到播放器到达屏幕边缘为止,此时会发生过渡并显示下一个屏幕。单个屏幕也可能具有多个过渡,例如,它的梯子可以上升到一个屏幕,但是您也可以向前走到另一个屏幕。 这些屏幕过渡如何建模? 屏幕0是播放器开始的开始屏幕。 屏幕0-3在水平方向上平滑滚动,并向玩家显示为一个连续的比赛场地。 由于在屏幕3及其相邻的屏幕4和5之间存在过渡,因此除非玩家移动到相应的边缘并“推动”到下一个屏幕,否则照相机不会前进到屏幕3的右边缘或上边缘。 一旦播放器移动到两个过渡边缘中的任意一个,用户输入就会立即被禁用,并且摄像机会过渡到新区域,之后恢复用户输入。 蓝屏(屏幕5)已禁用水平滚动,因此只能进行垂直过渡。 绿色屏幕(屏幕6)具有垂直返回屏幕5的垂直过渡,但也允许水平平滑滚动到屏幕7。 编辑:在房间方面实现过渡导致我这样做: 带有箭头的小缺口是可能发生过渡的区域。每个区域都有一个“方向”和谎言只是房间外面的可视区域。一旦玩家击中一个区域,就会开始过渡。
25 2d  camera  platformer 

4
如何为抽象的2d自上而下的水纹理制作动画?
想要改善这篇文章吗?提供此问题的详细答案,包括引文和答案正确的解释。答案不够详细的答案可能会被编辑或删除。 我目前正在实施一款具有自上而下的海洋景观的游戏。我使用以下抽象纹理: 实际的纹理是透明的,为清晰起见,我添加了绿色。 我现在遇到的问题是,我不知道如何为该纹理设置动画,因此水看起来不错。我试图用正弦波移动纹理: texture.y += sin(angle)。当然,现在整个纹理正在移动,这看起来有点不现实。我尝试的下一件事是添加另一层并实现视差效果。这样,水面下的反射也会移动,但速度要慢得多。看起来好一点,但还不够好。 我认为,如果单个单元会膨胀和收缩,则外观最好的动画就像是一块网或一块布。想象一下,如果有人稍微拉动这些单元格的一个顶点,而相邻的单元格会扩张,而我拉向(或推向)的单元格就会收缩。有点像弹簧网(?)。但是我不知道如何实现这样的事情: 什么是数学模型?带有弹簧的东西,力在哪里推/拉? 如果是这样,如何将模型映射到给定的纹理?保持所有曲线,不保持曲线... (我也对如何为给定的纹理设置动画有不同的想法/答案。现实主义并不是这里的重点,只是一些像运动一样漂亮的水...) DMGregory的解决方案 我在这篇文章中发布了一个libgdx示例:2d水动画呈锯齿状且不平滑(请参阅有关纹理过滤的答案)
24 2d  libgdx  animation  water 

5
如何在2D平铺游戏中快速计算视野?
我有一个图块矩阵,在某些图块上有对象。我想计算哪些图块对播放器可见,而哪些则不可见,所以我需要非常有效地做到这一点(因此即使我有一个大矩阵(100x100)和很多对象,它也可以足够快地进行计算)。 我尝试使用Bresenham的line算法来做到这一点,但是速度很慢。另外,它给了我一些错误: ----XXX- ----X**- ----XXX- -@------ -@------ -@------ ----XXX- ----X**- ----XXX- (raw version) (Besenham) (correct, since tunnel walls are still visible at distance) (@ is the player, X is obstacle, * is invisible, - is visible) 我敢肯定这是可以做到的-毕竟,我们有NetHack,Zangband,他们都以某种方式解决了这个问题:) 您可以为此推荐什么算法? 对于我的需求,我将定义可见这样的:瓷砖是可见的,当在瓷砖的至少一部分(例如角落)可以连接到播放器瓷砖的中心用一条直线,其不相交任何的障碍。

3
遮罩XNA中2D子画面的最佳方法?
我目前正试图掩盖一些精灵。我没有用语言解释它,而是制作了一些示例图片: 遮盖区域(白色) 现在,需要裁剪的红色精灵。 最终结果。 现在,我知道在XNA中,您可以做两件事来做到这一点: 使用模板缓冲区。 使用像素着色器。 我试图做一个像素着色器,基本上就是这样做的: float4 main(float2 texCoord : TEXCOORD0) : COLOR0 { float4 tex = tex2D(BaseTexture, texCoord); float4 bitMask = tex2D(MaskTexture, texCoord); if (bitMask.a > 0) { return float4(tex.r, tex.g, tex.b, tex.a); } else { return float4(0, 0, 0, 0); } } 这似乎可以裁剪图像(尽管一旦图像开始移动就不正确),但是我的问题是图像一直在移动(它们不是静态的),因此这种裁剪必须是动态的。 有没有一种方法可以更改着色器代码以考虑其位置? 另外,我已经读过有关使用模板缓冲区的信息,但是大多数示例似乎都取决于使用rendertarget,我真的不想这么做。(我已经在其余的游戏中使用了3或4,并且在其上面再添加一个似乎过大了) 我发现唯一不使用Rendertargets的教程来自Shawn …
24 xna  2d  hlsl  masking 

3
关于游戏开发物理的好书是什么?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 3年前关闭。 我正在寻找一本很好的初学者书籍,有关游戏开发中的物理学。专注于2D游戏的东西会更好。
23 2d  physics  books 

7
如何以圆周运动拦截对象
我正在创建2D太空游戏,需要使飞船拦截一颗行星。我有用于直线截距的工作代码,但无法弄清楚如何计算圆形轨道上的行星位置。 该游戏在科学上不够准确,因此我不必担心惯性,重力,椭圆轨道等。 我知道太空飞船的位置和速度,也知道行星的轨道(半径)和速度

3
存储游戏范围变量的最佳方法
我有一个选项屏幕来处理诸如难度,分辨率,全屏等内容,但是我正在努力寻找在运行时存储/获取这些变量的“最佳”方法。 当前,我实现了一个Constants包含所有GameOption枚举的类,但是如何为所有这些选项选择默认值?另外,如何获取当前选择的枚举? 具体来说,关于分辨率,我决定存储这些值,但是我不确定如何获取默认值或当前存储的值。任何方向都很好;谢谢!:) namespace V1.test.RPG { public class GameOptions { public enum Difficulty { EASY, MEDIUM, HARD } public enum Sound { ON, QUIET, OFF } public enum Music { ON, QUIET, OFF } public enum ResolutionWidth { SMALL = 1280, MEDIUM = 1366, LARGE = 1920, WIDESCREEN = 2560 …
23 c#  2d 

11
如何使用户友好的极坐标绕圆运动?
我正在做一个2D游戏,您可以用船降落在行星上,并且可以退出船并四处走动。 这些行星非常小(有时会想到约350像素半径),并且是从侧面看的。因此,您可以轻松地在屏幕上大致看到整个星球。 这可能有点令人困惑,所以这是一张图片: 我使用A和D键分别逆时针和顺时针移动。问题在于,如果您位于行星的“顶部”(上半部分),这是有道理的:A向左移动,D向右移动。但是,如果您位于行星的“底部”(底部一半),则A向右移动,D向左移动。 关于如何使它变得更加用户友好的任何想法?

2
正确实施“双跳”
我正在使用Corona开发2D iPhone游戏(试用版,所以我不能使用他们的论坛)。游戏涉及角色从天上掉下来,我正在尝试为角色实施“双跳”,以使他能够在跌倒时跳起来。我正在使用Corona的物理库来使角色掉落,到目前为止,让他跳跃的最佳方法是使用垂直脉冲法 object:applyLinearImpulse(0, -0.4, object.x, object.y) 我面临的问题是,当角色刚开始时(垂直速度低),他跳得很高;而当他摔倒了一段时间(垂直速度高)时,跳得可以忽略不计。我猜测最好的解决方案是使用某种方程式,将速度作为输入,以使跳跃与速度无关,但是我无法弄清楚该方程式是什么。 好的,这就是我的全部想法。最终的问题是,您如何精确地实现物理双跳?有没有适合我的问题的方程式?我应该采取其他方法吗?之前在Smash Bros等游戏中就已经做到了,所以有一个可重复的解决方案,对吧?
23 2d  physics 

4
如何处理2D屏幕坐标和笛卡尔坐标之间的差异
大多数2D屏幕/位图坐标系的Y轴正下方(原点位于左上角)。 这与大多数人以正的Y轴指向上方(原点为中心)的几何方式思考相反。 大多数游戏如何管理两个不同的2D坐标系?坐标有两种主要类型(屏幕与笛卡尔坐标),但可能有许多不同的坐标空间:精灵空间,世界空间,视图空间,屏幕空间等。 背景: 我最初使游戏中的世界坐标与2D屏幕坐标约定相匹配。这使得使用图形绘制例程非常自然,但是在使用三角函数(如atan2())时会出现一些细微问题。馈入atan2()2D屏幕坐标的结果非常令人困惑,因为atan2()假定正y轴指向上。 因此,我更改了世界坐标,以遵循经典的笛卡尔坐标系(原点位于屏幕左下方)。使用atan2()进行推理更加简单明了,但是现在很难进行其他类型的推理: 如果我单击此处的屏幕,下面是什么精灵? 我在哪里点击了那个精灵? 如果在错误的位置绘制了子图形,则错误地计算了什么?屏幕坐标还是世界坐标? 我意识到从屏幕坐标到直角坐标的转换只涉及将y值按-1缩放,同时可选地转换两个(x,y)值。我对游戏设计的最佳做法更感兴趣: 大多数游戏是否只​​遵循屏幕坐标约定并改变了他们对atan2()之类的东西的看法? 何时/如何完成坐标系转换?(使用矩阵,OOP抽象等) 子画面位置是否存储为子画面的中心或拐角之一?当我绘制精灵时,精灵的高度/宽度朝“错误”方向移动似乎是一个常见问题。 尽管我的问题主要是关于2D游戏,但OpenGL似乎使用了Y轴指向上方的坐标系。OpenGL必须最终将这些3D坐标投影到2D屏幕坐标系上。也许可以在OpenGL的方法中找到一些指导...
23 2d  screen  coordinates 

4
如何处理2D中的角碰撞?
我正在写一个自上而下的2D XNA游戏。自从我第一次上学以来,我一直在尝试自己编写物理学和碰撞学知识。 每当我的玩家精灵角色试图移动到其边界与墙的边缘相交的位置时,我都会计算出反弹角(入射角=反射角),并让玩家反弹出墙并避免碰撞。 我很难弄清楚如何处理我的精灵同时与两个墙边相交的情况,尽管它碰到了一个角落。 我的代码当前告诉我,两个墙的边缘已经相交,但是没有碰到哪个边缘,因此没有反弹。 选择哪个边缘反弹的数学测试是什么?看到它的时候很简单,但是我正在努力寻找它的数学测试。

2
Unity精灵中用于单位的像素属性是什么?
我开始学习Unity进行2D开发。 因此,我将几个精灵导入游戏中,我不禁注意到默认存在的“以像素为单位”属性100。我通常将其设置为1。我为什么需要将此值不同于1?或者,更广泛地说,是否有理由让多个精灵具有不同的
22 2d  unity 

4
关于创建2D流体的一些好例子是什么?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 3年前关闭。 任何人都可以使用C#或C / C ++共享任何好的示例,教程或代码片段吗?
22 2d  simulations 

6
有哪些设计有趣,具有挑战性的Mario风格平台游戏关卡的技术?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 8个月前关闭。 我拥有制作Mario型游戏所需的一切。我只是不知道如何设计关卡以使其具有挑战性或乐趣。有小费吗? 杀死敌人的唯一方法是跳上敌人,所以我认为要成为一个老板很难。我只是想把最后一个级别加长。这是一个坏主意吗?

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.