Мультимедийные возможности с++
Анимация движения персонажей
Download 143.59 Kb.
|
Информатика
1.Анимация движения персонажей
Для начала при создании платформера на языке C++ необходимо продумать, как будет прорисовываться анимация персонажей Tails и Mario, соответственно, так как именно они в платформере передвигаются. Для этого используется быстрый перебор тайлов, который и приводит к иллюзии движения персонажей: Рисунок 1 – Тайлсеты для создания анимации движения персонажей На языке С++ код имеет такой вид: void update(float time) { control(); switch (state) { case right:dx = speed; break; case left:dx = -speed; break; case up: break; case down: dx = 0; break; case stay: break; } x += dx*time; checkCollisionWithMap(dx, 0); y += dy*time; checkCollisionWithMap(0, dy); sprite.setPosition(x + w / 2, y + h / 2); dy = dy + 0.0015*time; currentFrame += time * 0.005; if (currentFrame > 7) currentFrame -= 7; if (dx>0) sprite.setTextureRect(IntRect(0 + 45 * int(currentFrame), 140, 45, 32)); } Где sprite – это вырезанная из Тайлсета текстура с размерами 45*32, при этом начальная координата задана x=0, y=45; затем если sprite меняется на тайл с координатами 0, 90, затем 0,135, а затем дойдя до 7 тайла, он как видно из этого кода ”if (currentFrame > 7) currentFrame -= 7;” снова начинает перебирать тайлы c самого сначала, таким образом, создается иллюзия движения персонажа. При желание можно за место данного тайлсета использовать какой-нибудь более качественный и современный тайлсет, эффект движения при этом значительно улучшится. Однако персонаж должен уметь двигаться не только вправо, но и как минимум влево, для этого необходимо лишь добавить следующую строчку кода if (dx<0) sprite.setTextureRect(IntRect(0 + 45 * int(currentFrame) + 45, 140, -45, 32)); и спрайты попросту буду зеркально отражаться при движение вправо. Далее необходимо прописать код, описывающий то, как мы будет управлять движение персонажа: void control(){ if (health > 0) { if (Keyboard::isKeyPressed){ if ((Keyboard::isKeyPressed(Keyboard::Left))) { state = left; speed = 0.1; }… То есть при нажатие на клавишу Left, персонаж начинает двигаться влево и при этом создается иллюзия его передвижения. Аналогично можно прописать код для действий при нажатии прочих клавиш. Анимация Mario была прописана аналогично. Download 143.59 Kb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling