2017-01-26 9 views
2

Итак, я создал анимацию спрайтов с использованием SDL Perl, хорошая новость - это изображение спрайта, и плохая новость заключается в том, что движущийся спрайт точно не выровнен в 47x47 SDLx::Rect
Как правильно переместить спрайт-образ в SDL Perl

Я не могу объяснить, что происходит, так вот скриншот

enter image description here

А вот изображение Sprite я использовал

enter image description here

И, наконец, мой код:

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(); 

Нужна ваша помощь, спасибо!

ответ

0

Ваш лист спрайта - 313 пикселя в ширину и 6 изображений. Убив последнюю колонку, 312/6=52, далекой от 47, о которой вы заявили. Также ваш step_y равен 1, когда он должен быть 0.

+0

Если вы поместите 0 в 'step_y => 1, вы получите сообщение об ошибке« Незаконное деление на ноль », поэтому я установил' $ anim-> step_y (0); 'поэтому я попробую 52x52 и спасибо за ответ, хотя, оцените это :) – RickNMorty