Articles of 2d

如何创建Android 2D游戏?

我是一个仍然在Android学习的开发者,到目前为止我创建了两个应用程序,一个闹钟,一个小部件和一个使用数据库的传递管理器,我有一点经验,但我想创建一个2D端滚动游戏,我在网上查看并且有不同的教程,但是,开始研究它的最佳方法是什么? 我读过关于libgdx但我不确定它是否已经过时了。 我已经看到所有游戏都是用Java制作的,然后移植到Android上,这是正确的吗? 我很感激一些指导,谢谢!

Bitmoji如何运作?

有没有人有想法,bitmoji或其他类似的服务如何工作? 我有一个应用程序的想法,应该有自定义的头像。 3D游戏有多个库,它们基于Morphing。 简单。 然而,所有2D字符都是用精灵制作的。 但是如果你考虑一下bitmoji有多少选项,你认为它们基本上已经绘制了所有可能的精灵吗? 还是我愚蠢地find“黄砖路”? 谢谢你的建议。

用于Android 2D游戏的2D API或OpenGL ES?

我打算为没有专用GPU的Android设备开发2D游戏,比如HTC Wildfire。 我记得从PC上看,由于速度和function,OpenGL通常被选为SDL之类的2D图形。 在Android上,有两个图形API: 一个“普通的”2D API(它有一个名字吗?) OpenGL ES 2.0 对于应该在没有专用GPU的Android设备上运行的2D游戏,我应该支持哪一个?

Skia和Android Paint绘图对象及其使用或文档

有没有人知道Android使用的Skia绘图库的良好文档? Canvas主对象几乎没有任何状态,所以我特别想到你可以嵌入到Paint对象中的对象。 我已经通过试验和错误解决了如何使用一些ColorFilters并使用ColorMatrixColorFilter制作了很酷的效果。 现在我也想从LinearGradient着色器中获得所需的阴影。 我想我理解PathEffects并对XferModes有一些想法。 MaskFilters和Rasterizer对我来说仍然是完全不透明的。 但是,试错并不是理解复杂库的好方法。 大多数情况下,我担心Android文档不讨论2D图形和使用它们的方法。 即使是类javadoc也经常不解释这个类正在做什么。 实际的function都在Skia C代码中,我可以得到它,但它也缺少文档。 我已经看过一些很酷的演示,但谷歌没有解释他们是如何完成的。 是理解这些东西实验和阅读C代码的唯一方法吗? 效率和最佳实践如何? Davlik / Android VM对内存分配敏感,有时速度慢,我担心我不是最好的方式。

Framebuffer FBO渲染到纹理非常慢,在Android上使用OpenGL ES 2.0,为什么?

我正在使用opengl es 2.0编写Android 2d游戏。 在我将精灵绘制到后备缓冲区后,我将灯光绘制到FBO并尝试将其再次混合到后台缓冲区。 当我将FBO绘制到帧缓冲区时,即使没有任何颜色也没有任何颜色,帧率在三星Galaxy w上从60降到30(它有一个adreno 205作为gpu)。 我到处搜索并尝试了所有内容,即使我在场景中绘制了一个精灵并将一个透明的FBO纹理混合到帧速率下降的屏幕上。 我在手机上尝试了其他带有灯光效果的游戏,它们运行良好,几乎所有游戏都可以在手机上运行,​​我相信它们也使用了帧缓冲。 在Galaxy SII(mali 400 gpu)运行正常,我对opengl很新,所以我相信我在某个地方犯了一个错误,我分享了我的代码。 // Create a framebuffer and renderbuffer GLES20.glGenFramebuffers(1, fb, offset); GLES20.glGenRenderbuffers(1, depthRb, offset); // Create a texture to hold the frame buffer GLES20.glGenTextures(1, renderTex, offset); GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, renderTex[offset]); GLES20.glTexImage2D(GLES20.GL_TEXTURE_2D, 0, GLES20.GL_RGBA, screenWidth, screenHeight, 0, GLES20.GL_RGBA, GLES20.GL_UNSIGNED_BYTE, null); GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_WRAP_S, GLES20.GL_CLAMP_TO_EDGE); GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_WRAP_T, GLES20.GL_CLAMP_TO_EDGE); […]

Matrix.postScale(sx,sy,px,py)如何工作?

首先阅读泰格的问题 泰格说: 调用Matrix.postScale时(sx,sy,px,py); 矩阵得到缩放并被翻译(取决于给定的点x,y)。 这预示着这种方法可用于放大图像,因为我可以轻松地聚​​焦一个特定的点。 android doc描述了这样的方法: Postconcats the matrix with the specified scale. M’ = S(sx, sy, px, py) * M 乍一看这看起来很荒谬,因为M应该是3×3-Matrix。 挖掘我发现android使用4×4-Matrix进行计算(同时只在其API上提供3×3)。 由于此代码是用C语言编写的,因此我很难理解实际发生的情况。 我在Wolfram看到了视觉变换 我的问题和泰格一样 我真正想知道的是:如何将这种缩放(有重点)应用于我可以在Java代码中访问的3×3 Matrix? 谁能给我一个例子和2d-scaling公式,其中包含一个10岁孩子能理解的4个参数(sx,sy,px,py)?

Android车速表(针规)

创建一个简单的应用程序,计算您的速度并将其显示在速度表图形中。 我可以做所有的速度计算,gps计算等。但我对animation不太确定。 除了温度计示例之外,有没有人在针规上有任何好的教程或示例?

将Spritekit游戏转换为Android?

有没有将spritekit游戏转换为android的新选项? 似乎唯一的选择是在Java中重新编码所有内容或使用Cocos2D,LibGDX等。

支持Unity中的多个宽高比

我一直在尝试创建一个Unity 2D游戏,支持Android和平板电脑的每个设备的宽高比。 有没有办法这样做是由Unity提供或推荐的?

了解Android的Canvas.saveLayer(…)

我希望saveLayer方法允许我绘制到不同的“图层”,然后一旦绘图完成,将图层与canvas合并,无论我选择哪个顺序。 显而易见的问题是“为什么不重新安排您的绘图操作呢?” 答案是我不能: 我有一个路径,我需要绘制到canvas上。 在背景/最低z-index中,我想使用填充样式绘制封闭的路径并使用一些额外的点。 然后,除此之外,我想绘制一个最初只在路径中的点的轮廓。 由于我无法撤消向Path添加点,我唯一的选择是克隆路径,或者绘制到第二层,以后可以将其放在其他所有层之上。 saveLayer()似乎提供了这种function,但它并没有像我期望的那样运行。 我的操作的基本流程是这样的: int overlay = canvas.saveLayer(…); // drawing operations for my uppermost layer … int background = canvas.saveLayer(…); // drawing operations for my background layer … // merge the offscreen background bitmap with the canvas: canvas.restoreToCount(background); // merge the offscreen overlay bitmap with the canvas: canvas.restoreToCount(overlay); 当代码运行时,背景和叠加的顺序根本没有改变; 首先绘制的是底部,最后绘制的是最重要的。 […]