标签: sprite

矩阵在相邻的子画面上变换,导致子像素间隙

我有三个精灵,堆叠在一起.

我修改他们的transform.matrix以给出他们一致增长的外观.

但是,根据比例因子,瓷砖之间有时会出现小裂缝.

精灵之间的裂缝http://img21.imageshack.us/img21/7518/cracks.png

我想知道如何解决这个问题.

我知道AS3中的文本对象具有子像素渲染选项.也许所有AS3都存在类似的设置?其他想法?

不起作用的策略:cacheAsBitmap.

package
{

import flash.display.Sprite;
import flash.geom.Matrix;
import flash.geom.Point;

import mx.core.UIComponent;

public class tmpa extends UIComponent
{

    private var _scale:Number;

    private var _s1:Sprite;
    private var _s2:Sprite;
    private var _s3:Sprite;

    private var _s1Pt:Point;
    private var _s2Pt:Point;
    private var _s3Pt:Point;

    private var _tileDim:int;


    public function tmpa( ):void
    {
        _scale = 1;
        _tileDim = 100;

        _s1 = new Sprite();
        _s2 = new Sprite();
        _s3 = new Sprite();

        paintSprite( _s1, _tileDim );
        paintSprite( _s2, …
Run Code Online (Sandbox Code Playgroud)

flash sprite actionscript-3

4
推荐指数
1
解决办法
1256
查看次数

4
推荐指数
1
解决办法
1万
查看次数

慢速C++ DirectX 2D游戏

我是C++和DirectX的新手,我来自XNA.我开发了像Fly The Copter这样的游戏.我所做的是创建了一个名为Wall的类.在比赛开始的时候,我画了所有的墙.在XNA中,我将墙存储在ArrayList中,而在C++中我使用了vector.在XNA中,游戏运行速度很快,在C++中运行速度非常慢.这是C++代码:

void GameScreen::Update()
{
    //Update Walls
    int len = walls.size();
    for(int i = wallsPassed; i < len; i++)
    {
        walls.at(i).Update();
        if (walls.at(i).pos.x <= -40)
            wallsPassed += 2;
    }
}

void GameScreen::Draw()
{
    //Draw Walls
    int len = walls.size();
    for(int i = wallsPassed; i < len; i++)
    {
        if (walls.at(i).pos.x < 1280)
            walls.at(i).Draw();
        else
            break;
    }
}
Run Code Online (Sandbox Code Playgroud)

在Update方法中,我将X值减小4.在Draw方法中,我调用sprite-> Draw(Direct3DXSprite).这是游戏循环中唯一运行的代码.我知道这是一个糟糕的代码,如果你有想法改进它,请帮忙.谢谢,抱歉我的英语.

c++ directx graphics optimization sprite

4
推荐指数
1
解决办法
1960
查看次数

OpenGL Point Sprites可以在Android中运行吗?

我正在开发Droid版本2.1-update1.我支持的GL扩展包括GL_OES_point_sprite和GL_OES_point_size_array.

我无法获得点精灵渲染.下面的代码在glTexEnvi调用时从GLWrapperBase抛出UnsupportedOperationException.如果我禁用纹理并注释掉glTexEnvi all,它会在glPointSizePointerOES()处进一步抛出相同的异常.

Android中是否正确支持点精灵?有没有人让他们工作?或者下面的代码是否存在问题?

// Note that gl is cast to GL11
gl.glEnable(GL11.GL_TEXTURE_2D);
gl.glEnable(GL11.GL_BLEND);
gl.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
gl.glDepthMask(false);
gl.glEnable(GL11.GL_POINT_SPRITE_OES);
gl.glTexEnvi( GL11.GL_POINT_SPRITE_OES, GL11.GL_COORD_REPLACE_OES, GL11.GL_TRUE );  
gl.glEnableClientState(GL11.GL_VERTEX_ARRAY);
gl.glVertexPointer(2, GL11.GL_SHORT, 0, .vertBuffer);
gl.glEnableClientState(GL11.GL_POINT_SIZE_ARRAY_OES);
gl.glPointSizePointerOES(GL11.GL_FLOAT, 0, pointSizeBuffer);
Run Code Online (Sandbox Code Playgroud)

谢谢

android opengl-es point sprite

4
推荐指数
1
解决办法
4976
查看次数

如何在c#中翻转精灵

我正在制作一个基于XNA游戏开发教程游戏"射击游戏"的小游戏...经过一些试验和错误后,我制作了自己的动画精灵,我可以在屏幕上移动.问题是,他总是面临正确的.

我怎样才能改变这个(下面的图像),以便每次按下按键事件时他都面向正确的方向?!

你可能已经猜到了我对C#很陌生,我意识到这可能比我想象的要复杂得多,所以我只需要知道当他向左移动时左右移动时如何使精灵面朝右.

图片

先感谢您.

c# sprite

4
推荐指数
2
解决办法
9525
查看次数

使用SFML平铺图像

我有一个背景图像,当我的窗口是800 x 600时,它只有256 x 256.我不知道如何让图像在整个窗口重复出现.我目前正在加载图片:

sf::Texture Bkg;
if(!Bkg.loadFromFile("darkPurple.png"))
{
    return -1;
}

sf::Sprite Sprite;
Sprite.setTexture(Bkg);
Run Code Online (Sandbox Code Playgroud)

并在以后绘制:

window.draw(Bkg);
Run Code Online (Sandbox Code Playgroud)

我试着用:

texture.setRepeated(true);
Run Code Online (Sandbox Code Playgroud)

但这似乎没有帮助.

谢谢!

c++ textures sprite repeat sfml

4
推荐指数
1
解决办法
2916
查看次数

libgdx spritebatch不是基于纹理的Origin绘制的

我在这里画精灵的集合,当缩小,并进行放大时,一个更大的(16×16)的质地.当变焦水平达到阈值时,发生了互换使用较小的(4×4)的质感.

然而,为了使其成为平滑过渡,需要绘制精灵(位于[x,y]),其原点是精灵的中心.目前他们正在根据他们的左下角绘制.因此,当纹理交换发生时,精灵会略微跳跃,因为原点不匹配.

我已经创建了一些变量来调试并确保它们是正确的.

    TextureRegion sprite = null;

    boolean useHighResTexture = (_gameRef.cameraZoom < CAMERA_ZOOM_SWITCH_LO_RES);
    if (useHighResTexture) {
        //Zoomed in, Hi res, Use animation
        sprite = animation.getKeyFrame(animationStateTime, true);

    } else {
        //Zoomed out, lo-res, Use static image
        sprite = Assets.instance.getSmall();
    }


    float spriteWidth = sprite.getRegionWidth();
    float spriteHeight = sprite.getRegionHeight();
    float spriteOriginX = spriteWidth/2;
    float spriteOriginY = spriteHeight/2;

    //Draw(TEXTURE, x, y, originx, originy, 
    //      width, height, scaleX, scaleY, rotation, 
    //      srcX, srcY, 
    //      srcWidth, srcHeight, boolflipX, boolflipY

    //this.setCenter(spriteOriginX, spriteOriginY);

    batch.draw(sprite.getTexture(), this.x, this.y, spriteOriginX, …
Run Code Online (Sandbox Code Playgroud)

java android textures sprite libgdx

4
推荐指数
1
解决办法
3131
查看次数

Matter.js精灵大小

我正在使用matter.js进行物理模拟.

我的问题是,是否可以改变精灵大小?或者仅使用matter.js是不可能的?

这是我到目前为止:

Bodies.circle(x, y, 46, {
  render: {
    sprite: {
      texture: 'images/stone.png'
      //Is there a 'width:' or 'height' property?  
    }
  }
});
Run Code Online (Sandbox Code Playgroud)

javascript sprite matterjs

4
推荐指数
1
解决办法
3007
查看次数

2D精灵的mipmap的目的是什么?

在当前的Unity中,

对于任何"Sprite(2D和UI)",实际上它始终默认为打开"生成Mip贴图".

因此,每次放入图像时,都必须将其"关闭"并应用.

我根本看不到任何想要使用带有平面精灵的mipmap的情况.如果它们在你的Unity.UI(按钮等)中逐字使用,你永远不会想要mipmap,如果它们是精灵,你永远不会想要使用mipmap(事实上,它们通常用于像素完美的用途).

只有纹理(在3D东西上)才能看到"非常接近"或"处于掠角" - 这些概念似乎与"Sprite(2D和UI)"技术无关.

这只是Unity的一个不重要的错误("他们意外地默认启用了切换"),还是在某种情况下你用mipmap图标等?

在此输入图像描述

textures sprite unity-game-engine mipmaps unity3d-ui

4
推荐指数
1
解决办法
5428
查看次数

淡入/淡出GameObject

我对编码很新,我仍然在努力发展思维逻辑,以帮助我创建我想要的游戏解决方案.目前,我正在Unity尝试创建一个2D GameObject,这是一个隐藏秘密门的墙.当玩家GameObject触发它时,我希望GameObject淡出(大约90%),露出后面的空间和隐藏的门.

到目前为止,我已经设法弄清楚如何在触发器上使"秘密墙"GO处于非活动状态,因此它会消失,但这并不会产生我想要的视觉效果.正如我所说,我仍在努力开发编码器的思维方式,所以虽然我已经做了很多研究来解决这个问题,但很多结果我都不太明白.

这是我的代码:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class SecretDoor1 : MonoBehaviour {

    void OnTriggerEnter2D (Collider2D SecretDoorTrig) {
         if (SecretDoorTrig.gameObject.tag == "Player") {
             GetComponent<SpriteRenderer> ().enabled = false;
         }
         else {
             GetComponent<SpriteRenderer> ().enabled = true;
         }
    }

    void OnTriggerExit2D (Collider2D SecretDoorTrig) {

         if (SecretDoorTrig.gameObject.tag == "Player") {

             GetComponent<SpriteRenderer> ().enabled = true;
         }
         else {
             GetComponent<SpriteRenderer> ().enabled = false;
         }
    }
}
Run Code Online (Sandbox Code Playgroud)

c# 2d sprite unity-game-engine

4
推荐指数
2
解决办法
6223
查看次数