Articles of sprites

告诉我的着色器何时使用哪个纹理

所以我设法通过GLSL着色器进行纹理化,我可以通过一个sampler2d textureHandler +我的uv坐标到我的着色器来指定要在我的Tiles上显示的纹理。 现在即时通讯想知道如何可以定义哪个瓷砖应该得到哪个纹理原因,现在我只能把所有的瓷砖1单纹理我有… 我的顶点着色器: in vec3 position; in vec2 vertexUV; uniform mat4 orthoMatrix; out vec2 UV; void main() { gl_Position = orthoMatrix * vec4(position, 1.0); UV = vertexUV; } 我的片段着色器: in vec2 UV; out vec4 outColor; uniform sampler2D myTextureSampler1; void main() { outColor = texture2D(myTextureSampler1, UV); } 我的纹理加载现在看起来像这样: http : //puu.sh/62MhS.png

libgdx – 缩小图像时的图像瑕疵

为什么当我缩小一个位图时,这个边界出现在边缘的周围,我该如何避免呢? 我试过每一个我知道的filter,结果越来越差。 这是原始的位图:

是否可以创建一个设备,并以编程方式处理操作

我有一个用XNA-4.0制作的2D游戏。 我正在集思广益,如何实现一个可以绘制一个纹理的设备系统,并将其旋转/缩放到我角色当前的animation中,而不必为每个武器/装备部件创建一个单独的Atlas。 现在我有一个我使用的默认字符精灵表,对于我希望join到游戏中的每个项目,我将它绘制到精灵表中,从精灵表中删除字符,然后用给定设备的可见部分。 它工作的很好,而且看起来很棒……唯一的问题是,对于我在游戏中实施的每一件装备都需要大量的工作。 原本我的希望是创建一个图像,并有一个系统,可以根据需要改变纹理旋转和移动与我的英雄的animation。 由于我在2D中,因此我仅限于缩放和旋转图像。 这个目标是创造一个形象甚至可能性? 如果是的话,我会喜欢任何方向,如何可能实现。

如何处理spritesheet中的透明像素

我正在尝试正确处理透明像素。 我有一个spritesheet给了我以下内容: 绿体是地面物理体,精灵周围的灰体是精灵的物理体 – 用精灵的边界计算。 我打算为相同尺寸的地面图像制作图像,并且希望精灵的脚能够触地。 我能够通过使用TexturePacker在新的spritesheet中重新打包图像来实现这一点,而不需要任何透明的像素: 但是,现在我的问题是其他animation,如蹲下,例如: 正如你所看到的,精灵的脚再次离开了地面。 在游戏中做这个animation看起来很愚蠢,因为这个精灵通过把脚抬离地面而蜷​​缩起来。 JSON中来自TexturePacker的输出元数据如下所示: { "filename": "Crouch/soldier_crouch_1.png", "frame": {"x":712,"y":867,"w":353,"h":425}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":49,"y":42,"w":353,"h":425}, "sourceSize": {"w":433,"h":500}, "pivot": {"x":0.5,"y":0.5} }, // … 这是我的几个animation与这个和其他精灵的问题。 使用TexturePacker重新包装可以移除透明的像素,并拥有更精确的物理体(这是真正的目标,一旦我开始投射弹丸,我想要最准确的碰撞检测),但是现在animation看起来很有趣。 在游戏开发中如何处理这些事情?

如何为我的SFML游戏创建并实现一个精灵表单?

我目前正在制作一款游戏,并为我的玩家角色创建了6个16帧animation。 目前,每个文件都保存为单独的.jpg文件,比我想要的要大1.5倍。 每个animation的图像都有不同的大小,所以我有6种不同的图像大小。 例如,下面是两个不同animation的第一帧: 所以我在一个文件夹中有6×16的图像,我想创建一个sprite表单,我可以在我的c + + SFML游戏中使用。 当我创建一个spritesheet,使用像纹理打包工具这样的工具时,我在sprite工作表上的各种位置都有精灵,我不知道如何在我的游戏中执行它们。 如何实现它们使得它们1)在游戏中保持相对于彼此的相同位置2)使游戏知道当前图像的边界框,我可以用它作为碰撞的碰撞盒,作为矩形游戏显示的精灵。 我怎样才能做到这一点? 我的猜测是一些数据文件附加到精灵表,但我不知道如何创建一个。 附加信息:一些图像是重复的,如我的空闲帧2和空闲帧16.我想只能把其中的一个在精灵表。

是否有可能控制哪些脚本是活跃在哪些精灵/对象在Unity?

我有两个对象,我有一个脚本,使玩家改变他们的特点。 我将这个脚本应用于两者,正如您所期望的那样,按下Xbutton可以同时对两个对象执行颜色,大小和转换效果。 现在我怎么能给玩家一个关键input的select,以便能够select哪个项目应用脚本? 我正在努力使它像一个切换工作.. if (toggle == 1) { // player can only change color of item 1 } else if (toggle == 0) { //player can only change color of item 2 } 那么能够select是否启用脚本的语法有两种不同的子画面?

Direct2d – 卡在加载animation

我一直在尝试使用Direct2d来创建一个Mario游戏,但不幸的是,我无法从Sprite-sheet,足够大,在屏幕上加载图像。 我正在使用以下方式加载精灵: sprites = new SpriteSheet(L"./Sprites/index.png", gfx ,64 ,64); 以下是绘制位图的代码: void SpriteSheet::Draw(int index, int x, int y , float mag) { D2D1_RECT_F src = D2D1::RectF( (float)((index % spriteAcross) * spriteWidth), (float)((index % spriteAcross) * spriteHeight), (float)(((index % spriteAcross) * spriteWidth) + spriteWidth), (float)(((index % spriteAcross) * spriteHeight) + spriteHeight) ); D2D1_RECT_F dest = D2D1::RectF( x, […]

速度=距离/时间的Android游戏开发问题

我一直在为一个对象编码速度。 我已经做到了这一点,对象将从屏幕的一端移动到另一端,速度取决于屏幕的大小,我已经做出了这个决定,所以屏幕需要一秒的时间才能通过屏幕。 所以我已经制定了代码的速度,但是当我去分配速度它告诉我强迫closures,我不明白为什么。 这里是代码: 主游戏代码: @Override protected void onDraw(Canvas canvas) { setBlockSpeed(getWidth()); } private int blockSpeed; private void setBlockSpeed(int screenWidth){ Log.d(TAG, "screenWidth " + screenWidth); blockSpeed = screenWidth / 100; // 100 is the FPS.. i want it to take 1 second to pass the screen Math.round(blockSpeed); // to make it a whole number block.speed […]

Ligdx Box2d:将box2d坐标转换为屏幕坐标

我是新的libgdx,我有一个小问题。 我在box2d中创建了一个body,我想为它分配一个sprite; 为此,我需要获取主体的位置,然后在主循环中插入精灵的更新位置,对吧? 所以.. ..这样做,但精灵不正确的身体alignment,但在一个角落。 我应该写在body.setPosition()和精灵的位置? PS:对不起,但我不能张贴屏幕截图:(

通过只有一个glDrawArray调用来绘制更多的四元组?

编辑 在最初认为我的精灵批量testing比单独调用每个精灵更快之后,看起来情况并非如此! 🙁 通过一组GL调用每个精灵,我可以获得大约90个四边形移动而不降低性能。 通过我的批量testing,我可以得到12(全部在一个电话)。 问题在于我无法在任何地方find任何示例(代码),以了解如何使用Android(Java)和OpenGL ES 2.0实现这一点。 我的方法涉及传递一个坐标集数组,而不是一组坐标,然后该方法将建立一个数组来存储这些坐标,然后渲染相关数量的顶点。 就像我说的,它的工作原理,但性能是可怕的! 这是正确的方法吗? 谁能帮忙? 谢谢! 我正在使用Android与openGLES 2.0,我不能解决如何绘制2(或更多,但为了简单起见,让暂时说2)纹理四方只使用1调用glDrawArrays。 我的着色器是相当标准的,并考虑到精灵不透明度,如下所示: //vertex shader String strVShader = "uniform mat4 uMVPMatrix;" + "attribute vec4 a_position;\n"+ "attribute vec2 a_texCoords;" + "varying vec2 v_texCoords;" + "void main()\n" + "{\n" + "gl_Position = uMVPMatrix * a_position;\n"+ "v_texCoords = a_texCoords;" + "}"; //Fragment shader String strFShader […]