Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[SFML 1.6] Prosta animacja ludka problem ze znikaniem

Ostatnio zmodyfikowano 2012-07-11 08:04
Autor Wiadomość
wojownik266
Temat założony przez niniejszego użytkownika
[SFML 1.6] Prosta animacja ludka problem ze znikaniem
» 2012-07-11 07:54:36
Kiedy nacisnę klawisz to ludek znika. Kiedy puszczę to ludek się pojawia. Co zrobić aby ludek nie znikał?

C/C++
#include <iostream>
#include <SFML/Graphics.hpp>

#define ScreenWidth 800
#define ScreenHeight 600

#define sDown 128
#define sLeft 191
#define sRight 64
#define sUp 0

int main()
{
    sf::RenderWindow Window( sf::VideoMode( ScreenWidth, ScreenHeight, 32 ), "SFML Animacja" );
   
    sf::Image tempImage;
    sf::Sprite playerSprte;
   
   
    if( tempImage.LoadFromFile( "word.jpg" ) )
         playerSprte.SetImage( tempImage );
   
    float velx = 0, vely = 0;
    float x = 10, y = 10, moveSpeed = 0.1;
    int sourceX = 0, sourceY = sDown;
   
    while( Window.IsOpened() )
    {
        sf::Event Event;
        while( Window.GetEvent( Event ) )
        {
            if( Event.Type == sf::Event::Closed || Event.Key.Code == sf::Key::Escape )
                 Window.Close();
           
        }
       
        if( Window.GetInput().IsKeyDown( sf::Key::Right ) )
        {
            sourceY = sRight;
            velx = moveSpeed;
        }
        else if( Window.GetInput().IsKeyDown( sf::Key::Left ) )
        {
            sourceY = sLeft;
            velx = - moveSpeed;
        }
        else
             velx = 0;
       
        if( Window.GetInput().IsKeyDown( sf::Key::Up ) )
        {
            sourceY = sUp;
            vely = - moveSpeed;
        }
        else if( Window.GetInput().IsKeyDown( sf::Key::Down ) )
        {
            sourceY = sDown;
            vely = moveSpeed;
        }
        else
             vely = 0;
       
        x += velx;
        y += vely;
       
        if( velx != 0 || vely != 0 )
             sourceX += tempImage.GetWidth() / 4; //10;
        else
             sourceX = 0;
       
        if( sourceX == tempImage.GetWidth() )
             sourceX = 0;
       
        Window.Clear();
        playerSprte.SetSubRect( sf::IntRect( sourceX, sourceY, sourceX + tempImage.GetWidth() / 4, sourceY + tempImage.GetHeight() / 4 ) );
        playerSprte.SetPosition( x, y );
        Window.Draw( playerSprte );
        Window.Display();
    }
    return 0;
}
P-59823
wojownik266
Temat założony przez niniejszego użytkownika
» 2012-07-11 08:04:48
Już sobie poradziłem. Aby usunąć problem ze znikaniem wystarczyło zmienić tą instrukcje. Dodać "/4".
 
C/C++
if( sourceX == tempImage.GetWidth() / 4 )
     sourceX = 0;

P-59824
« 1 »
  Strona 1 z 1