2017-01-26 2 views
2

Also habe ich eine Sprite-Animation mit SDL Perl erstellt, die gute Nachricht ist, dass das Sprite-Bild sich bewegt und die schlechte Nachricht ist, dass das bewegliche Sprite in einem 47x47 SDLx::Rect nicht exakt ausgerichtet ist
Wie man ein Sprite-Bild in SDL Perl richtig bewegt

ich kann nicht wirklich erklären, was den Screenshot i

verwendet

enter image description here

Und hier ist das Sprite Bild so hier vor sich geht

Und schließlich mein Code:

use strict; 
use warnings; 

use SDLx::Sprite::Animated; 
use SDL; 
use SDLx::App; 
use SDL::Rect; 

my $anim = SDLx::Sprite::Animated->new(
    image => "ex.png", 
    step_x => 47, 
    step_y => 1, 
    rect => SDL::Rect->new(0,0,47,47), 
    ticks_per_frame => 6, 
    type => "circular", 
); 
$anim->step_y(0); 
$anim->start(); 

my $app = SDLx::App->new(dt=>0.02, exit_on_quit => 1, w=> 200, h => 200); 
$app->add_show_handler(
    sub{ 
     my ($step,$app) = @_; 
     $app->draw_rect([0,0,$app->w,$app->h],0); 
     $anim->draw($app->surface); 
     $app->update(); 
     $app->delay(2); 
    } 
); 

$app->run(); 

Ihre Hilfe benötigen, Dank!

Antwort

0

Ihr Sprite-Blatt ist 313 Pixel breit und hat 6 Bilder. Töten letzte Spalte, 312/6=52, weit von 47, dass Sie behauptet haben. Auch dein step_y ist 1, wenn es 0 sein sollte.

+0

Wenn du 0 in die 'step_y => 1 stellst, bekommst du einen Fehler 'Illegal division by zero', deshalb setze ich' $ anim-> step_y (0); 'so werde ich 52x52 versuchen und danke für die Antwort, schätze es :) – RickNMorty