2017-01-26 7 views
2

J'ai donc créé une animation d'image-objet en utilisant SDL Perl, la bonne nouvelle est que l'image-objet est en mouvement et la mauvaise nouvelle est que le sprite en mouvement n'est pas exactement aligné dans un 47x47 SDLx::Rect
Comment déplacer correctement une image d'image-objet dans SDL Perl

Je ne peux pas vraiment expliquer ce qui se passe alors voici la capture d'écran

enter image description here

Et voici l'image Sprite i utilisé

enter image description here

Et enfin mon 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(); 

besoin de votre aide, Merci!

Répondre

0

Votre feuille de sprite a une largeur de 313 pixels et 6 images. Tuer la dernière colonne, 312/6=52, loin de 47 que vous avez revendiqué. De plus, votre step_y vaut 1 quand il devrait être 0.

+0

Si vous mettez 0 dans le 'step_y => 1' vous obtiendrez une erreur' Division illégale par zéro', c'est pourquoi je mets '$ anim-> step_y (0); 'donc je vais essayer 52x52 et merci de répondre si, j'apprécie :) – RickNMorty