小编agt*_*gtv的帖子

如何减慢我的精灵动画?

目前我有这个player.cpp课程,我正在使用我的精灵动画.我正在使用计数器来更新每一帧.它动画,但它通过动画飞行.

我想放慢速度.我找到了可以用来减慢精灵动画的代码,但我不确定如何将它实现到我当前的程序中.

下面是我的player.cpp文件,然后是我发现可以减慢精灵动画的代码.当我试图添加一个时钟时counterWalking++它根本没有动画,我已经尝试实现这个代码同样的效果.

player::player()
{
    rect.setSize(sf::Vector2f(32, 32));
    rect.setFillColor(sf::Color::White);
    rect.setPosition(300, 300);
    sprite.setTextureRect(sf::IntRect(0, 0, 32, 32));
}

void player::update()
{
    sprite.setPosition(rect.getPosition());
}

void player::updateMovement()
{
    if (sf::Keyboard::isKeyPressed(sf::Keyboard::Right)) {

        if (canMoveRight == true) {

            rect.move(movementSpeed, 0);
            sprite.setTextureRect(sf::IntRect(counterWalking * 32, 64, 32, 32));
            direction = 4;
            canMoveUp = true;
            canMoveDown = true;
            canMoveLeft = true;
            canMoveRight = true;
        }
    }
    else if (sf::Keyboard::isKeyPressed(sf::Keyboard::Left)) {

        if (canMoveLeft == true) {

            rect.move(-movementSpeed, 0);
            sprite.setTextureRect(sf::IntRect(counterWalking * 32, 32, 32, 32));
            direction …
Run Code Online (Sandbox Code Playgroud)

c++ animation sfml

5
推荐指数
1
解决办法
937
查看次数

如何使着色器淡入某种颜色?

这是我当前使用的着色器。它通过缓慢降低不透明度来淡化对象。我想褪成紫色。如何才能做到这一点?

着色器.frag:

uniform sampler2D texture;
uniform float opacity;

void main()
{
    vec4 pixel = texture2D(texture, gl_TexCoord[0].xy);
    gl_FragColor = pixel * vec4(1.0, 1.0, 1.0, opacity);
}
Run Code Online (Sandbox Code Playgroud)

着色器.vert:

void main()
{
    gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
    gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0;
    gl_FrontColor = gl_Color;
}
Run Code Online (Sandbox Code Playgroud)

Shader在main函数中的应用:

sf::Shader shader;
if (!shader.loadFromFile("shader.vert", "shader.frag"))
    return EXIT_FAILURE;

float opacity = 1.0; //transparency of shader
shader.setParameter("texture", sf::Shader::CurrentTexture); //shader.vert
shader.setParameter("opacity", opacity);                    //shader.frag
Run Code Online (Sandbox Code Playgroud)

///////////////////////////////////////////////////////

//Delete Text Display
    counter1 = 0;
    for (iter8 = textDisplayArray.begin(); iter8 != textDisplayArray.end(); iter8++)
    { …
Run Code Online (Sandbox Code Playgroud)

c++ shader sfml

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

标签 统计

c++ ×2

sfml ×2

animation ×1

shader ×1