컴퓨터 공학/Qt

[ Qt 프로그래밍 ] 젤다의 전설 캐릭터로 Sprite 애니메이션을 적용해보았습니다.

혼새미로 2015. 11. 27. 00:10
반응형


zelda.exe


Zelda.zip



BGM정보 : 브금저장소 - http://bgmstore.net/view/tA4eI


지난번에 만든 아오오니를 보면 캐릭터가 걷는 동작 없이 움직이는 것을 볼 수 있습니다.

그래서 Qt에서 걷는 애니메이션을 만들 수 없을까해서 이리저리 검색해본결과 생각보다 쉬웠습니다.

Qt에 있는 QPixmap과 QPainter의 drawPixmap함수만 사용하면 쉽게 만들 수 있습니다.


Colored By Color Scripter

1
2
3
4
5
6
7
8
void Widget::paintEvent(QPaintEvent *)
{
    QPainter painter(this);
    painter.setBrush(QBrush(Qt::black,Qt::SolidPattern));
    painter.setPen(QPen(Qt::transparent));
 
    painter.drawPixmap(QPoint(0,0),guy,walkRect);
}

 

Qt Widget 클래스에서 제공하는 paintEvent함수 내에서 drawPixmap함수가 실제 그려주는 역할을 합니다. 

첫번쨰 인자는 위젯 내에서 그릴 위치, guy는 제가 선언한 QPixmap 인스턴스입니다. 그리고 walkRect는 QRect 인스턴스인데,

QTimer 인스턴스를 통해 0.05초마다 QPixmap에 올려둔 그림의 위치를 바꿔줍니다.


QPixmap에 올려둔 그림은 다음과 같습니다.




이 그림을 딱 본순간 이해가 가시죠? 그릴 위치만 빠르게 바꿔주면 마치 움직이는 것처럼 보입니다.


 

 

결과는 위 사진과 같습니다. 용량때문에 스크린 전체를 찍진 못했지만, 저렇게 바탕화면 위를 걸어다닙니다. 

아오오니보다 조금 더 자연스러워지지 않았나요? ㅎㅎ

 

첨부파일에 올려둘테니 한번 해보세요.

키보드 화살표 키로 움직일 수 있습니다.

그리고 요녀석은 어떤 프로그램이 나와서 항상 가려지지 않습니다.

걸리적거리면 다른곳으로 이동시켜주세요!

 

 

 

반응형