Просмотр полной версии : Анимация персонажа (платформер)
Привет. Пытаюсь сделать платформер использую AS2. Управление персонажем есть. Персонаж у меня в виде мувика перемещаться и прыгать он уже умеет. В дальнейшем хочу сделать ему анимацию. Но вот как ее переключать в той или иной ситуации не знаю, например (идет, бежит, стоит, погиб, прыгнул и т.д.) может кто делал.
вот код управления персонажем:
onClipEvent (load) {
var platforma:MovieClip = _root.platforma;
var grav:Number = 0;
var gravity:Number = 2;
var speed:Number = 7;
var maxJump:Number = -12;
var touchingGround:Boolean = false;
}
onClipEvent (enterFrame) {
_y += grav;
grav += gravity;
while (platforma.hitTest(_x, _y, true))
{
_y -= gravity;
grav = 0;
}
if (platforma.hitTest(_x, _y + 5, true))
{
touchingplatforma = true;
}
else
{
touchingplatforma = false;
}
if (Key.isDown(Key.RIGHT))
{
_x += speed;
}
if (Key.isDown(Key.LEFT))
{
_x -= speed;
}
if (Key.isDown(Key.UP) && touchingplatforma)
{
grav = maxJump;
}
if (platforma.hitTest(_x + (_width / 2), _y - (_height / 2), true))
{
_x -= speed;
}
if (platforma.hitTest(_x - (_width / 2), _y - (_height / 2), true))
{
_x += speed;
}
if (platforma.hitTest(_x, _y - (height), true))
{
grav = 3;
}
}
как при нажатии клавиш помимо перемещения мувика еще и менять ему анимацию? Спасибо.
an_games
12.05.2011, 14:51
тут есть базовые принципы
http://xitri.com/2009/06/16/simple-platform-flash-game-engine.html
Да смотрел я это, когда только начинаешь сложновато. Я уже добился определенных результатов как закончу обязательно покажу. Ну и всетаки может кто еще че нибудь знает как реализовать анимацию персонажа. Ну точнее саму анимацию, а управление анимацией.
Переключайте анимацию в зависимости от применяемого управления и игровой ситуации:
1) Если в прыжке - анимацию прыжка (переключение как в момент самого прыжка, так и при падении, на что должна быть соответствующая проверка)
2) Нажали идти вправо-влево (при этом !прыжок) - ставим анимацию бега
Если вас интересует, как именно ее менять - внутри клипа делается раскадровка с состояниями (анимация циклится там же), потом просто переключаются кадры.
Это вам так, простенький совет. Умные могут вам посоветовать нарезать в битмапдаты и много еще чего.
Да это я все понимаю и уже анимация у меня есть мне интересны механизмы AS2 как в определенной ситуации воспроизводить ту или иную анимацию.
Сначала попробовал сделать следующее:
if (Key.isDown(Key.RIGHT))
{
_root.hero.gotoAndPlay(1);
_x += speed
}
;
тоесть при нажатии клавиши стрелка вправо воcпроизводить 1 кадр на котором находится мувик с анимацией идущего перса вправо. Но это не очень хороший способ хотя хоть как то заработало.
В таком случае держите в памяти предыдущее состояние, чтобы не переключать лишний раз. Вроде такого:
if (Key.isDown(65)) {
player._x -= speed;
if (prevAnim != 1) {
player.gotoAndPlay("run");
prevAnim = 1;
}
}
if (Key.isDown(Key.SPACE) && !jump) {
jump = true;
speedY = jumpSpeed;
}
jump = (speedY<5 && speedY>0) ? true : jump;
if (jump) {
hero.gotoAndStop(3);//прыжок
} else {
if (oldX != hero._x) {
hero.gotoAndStop(2);//идет
} else {
hero.gotoAndStop(1);//стоит
}
}
oldX = hero._x;
и добавь проверку, когда персонаж касается ногами об пол jump = false.
Привет вот как то так, но многое из этого меня не устраивает во время перемещения персонаж буквально рябит на мониторе, что на него невозможно глядеть + еще когда меняешь направление движения тоже как то резко все происходит ну и плюс заторможенное приземление после прыжка надо что то с гравитацией делать.
здесь swf кому интересно посмотреть что получилось.
http://file.qip.ru/video/w5aCRwwO/test.html
onClipEvent (load) {
speed = 20;
isJumping = false;
jumpSpeed = 2;
startY = _y;
scale = _xscale;
}
onClipEvent (enterFrame) {
if (isJumping) {
_y += jumpSpeed;
jumpSpeed += 1;
if (_y>=startY) {
_y = startY;
isJumping = false;
speed = 10;
}
} else {
if (Key.isDown(Key.UP)) {
isJumping = true;
jumpSpeed = -20;
speed = 6;
}
}
if (Key.isDown(Key.LEFT)) {
play();
_x -= speed;
_xscale = -scale;
} else {
if (Key.isDown(Key.RIGHT)) {
play();
_x += speed;
_xscale = scale;
} else {
stop();
}
}
}
прихожу к мысли, что проще взять готовый движок платформера с этого сайта http://xitri.com и ковыряться в нем :( , но программирование подтягивать надо...
ооо... у вас сразу все плохо - код на клипах.
это и смотреть никому не интересно.
в примере - все по-другому.
не понял, что значит в примере
тут есть базовые принципы
http://xitri.com/2009/06/16/simple-platform-flash-game-engine.html
в этом ;)
Я просто стараюсь делать сам, пока получается так как получается :) дальше лучьше
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.