Анимация во время перемещения объекта в TDS (Решено)
|
|
Skrininshot | Дата: Воскресенье, 17 Декабря 2017, 16:26 | Сообщение # 1 |
частый гость
Сейчас нет на сайте
| Создал объект Legs и присвоил ему спрайт анимации перемещения. Как сделать так, чтобы анимация объекта Legs была активна во время передвижения объекта Player, находилась по координатам этого объекта и была направлена в ту сторону, в которую он перемещается ?
What is love Baby don't hurt me Don't hurt me No more...
Сообщение отредактировал Skrininshot - Пятница, 22 Декабря 2017, 11:13 |
|
| |
AlexanderBekker | Дата: Воскресенье, 17 Декабря 2017, 22:01 | Сообщение # 2 |
BekkerDev Studio
Сейчас нет на сайте
| В Create объекту игрока:
Код oLegs = instance_create(x, y, objLegs); В End Step:
Код oLegs.x = x; oLegs.y = y; oLegs.image_speed = speed / maxSpeed; //maxSpeed — максимальная скорость, с которой может двигаться игрок oLegs.image_angle = direction;
Разработчик, композитор и издатель инди-игр в Steam. Редактор карт: BekkerDev Level Editor 4 Страница разработчика в Steam Паблик ВК: BekkerDev Studio
Сообщение отредактировал AlexanderBekker - Понедельник, 18 Декабря 2017, 20:30 |
|
| |
Skrininshot | Дата: Понедельник, 18 Декабря 2017, 15:58 | Сообщение # 3 |
частый гость
Сейчас нет на сайте
| AlexanderBekker, Спасибо, можно ещё узнать, как ноги направить в ту сторону, в которую движется игрок?
What is love Baby don't hurt me Don't hurt me No more...
|
|
| |
AlexanderBekker | Дата: Понедельник, 18 Декабря 2017, 20:31 | Сообщение # 4 |
BekkerDev Studio
Сейчас нет на сайте
| Skrininshot, дописал.
Разработчик, композитор и издатель инди-игр в Steam. Редактор карт: BekkerDev Level Editor 4 Страница разработчика в Steam Паблик ВК: BekkerDev Studio
|
|
| |
Skrininshot | Дата: Понедельник, 18 Декабря 2017, 21:35 | Сообщение # 5 |
частый гость
Сейчас нет на сайте
| AlexanderBekker, Всё равно ноги направлены только в одну сторону((( еще хочу сделать, чтобы скорость анимации зависела от того как передвигается персонаж (бегом либо пешком), но анимация ног играет только тогда, когда персонаж бегает в скрипте Moving игрока:
Код global.walking = false if keyboard_check(ord('W')) {global.walking = true; y-=global.sp}//так же проделал и с бегом
в EndStep'e игрока
Код if object_exists(Player) = true { if global.walking = true { Legs.image_speed = 3 / 6 } if global.walking = false { Legs.image_speed = 0 / 6 }
if global.running = true { Legs.image_speed = 5 / 6 }
if global.running = false { Legs.image_speed = 0 / 6 } }
What is love Baby don't hurt me Don't hurt me No more...
Сообщение отредактировал Skrininshot - Понедельник, 18 Декабря 2017, 21:54 |
|
| |
Sirius105 | Дата: Вторник, 19 Декабря 2017, 05:31 | Сообщение # 6 |
участник
Сейчас нет на сайте
| что скорость анимации зависел от скорости бега пропиши проcто: sp = 2 // скорость пешком maxsp = 2 // скорость бегом image_speed = sp*maxspДобавлено (19 декабря 2017, 05:31) --------------------------------------------- Если это слишком быстро или медленно, сделай отдельные 2 переменные и манипулируй числами, эксперементируй
|
|
| |
AlexanderBekker | Дата: Вторник, 19 Декабря 2017, 14:12 | Сообщение # 7 |
BekkerDev Studio
Сейчас нет на сайте
| Допиши в Create объекту игрока:
Код walking = false; running = false; В Step:
Код xa = 0; ya = 0; if (keyboard_check(ord('W'))) ya--; if (keyboard_check(ord('S'))) ya++; if (keyboard_check(ord('A'))) xa--; if (keyboard_check(ord('D'))) xa++; walking = xa != 0 || ya != 0; running = keyboard_check(vk_shift) * walking; spd = global.sp * (1 + running * 0.4); x += xa * spd; y += ya * spd; И в End Step:
Код oLegs.image_angle = point_direction(xprevious, yprevious, x, y); oLegs.image_speed = walking * 0.6 + running * 0.4; // можно и так: oLegs.image_speed = (walking + running) * 0.5;
Может, громоздкое решение, но это первое, что пришло на ум.
Разработчик, композитор и издатель инди-игр в Steam. Редактор карт: BekkerDev Level Editor 4 Страница разработчика в Steam Паблик ВК: BekkerDev Studio
|
|
| |
Skrininshot | Дата: Среда, 20 Декабря 2017, 12:32 | Сообщение # 8 |
частый гость
Сейчас нет на сайте
| AlexanderBekker, Спасибо, теперь всё работает, правда не совсем ясно, почему здесь по два оператора после переменных:
Код if (keyboard_check(ord('W'))) ya--; if (keyboard_check(ord('S'))) ya++; if (keyboard_check(ord('A'))) xa--; if (keyboard_check(ord('D'))) xa++;
и не совсем ясна эта строка:
Код walking = xa != 0 || ya != 0;
мог бы объяснить? И еще проблема с остающимися шагать ногами после смерти, весь день пытался решить эту проблему, но последняя надежда лишь на высший разум с форума
What is love Baby don't hurt me Don't hurt me No more...
Сообщение отредактировал Skrininshot - Среда, 20 Декабря 2017, 21:36 |
|
| |
AlexanderBekker | Дата: Четверг, 21 Декабря 2017, 06:20 | Сообщение # 9 |
BekkerDev Studio
Сейчас нет на сайте
| Цитата Skrininshot ( ) правда не совсем ясно, почему здесь по два оператора после переменных Это инкремент и декремент — операции, увеличивающие и уменьшающие значение переменной на единицу. Например, ya-- — то же самое, что ya -= 1 или ya = ya - 1.
Цитата Skrininshot ( ) и не совсем ясна эта строка: Переменные xa и ya служат для определения направления движения по осям X и Y, и переменная walking становится true, если мы двигаемся хотя бы по одной из осей.
Цитата Skrininshot ( ) И еще проблема с остающимися шагать ногами после смерти Нужно уничтожать объект ног при смерти игрока. Ему в событии Destroy пропиши:
Код with (oLegs) instance_destroy();
Разработчик, композитор и издатель инди-игр в Steam. Редактор карт: BekkerDev Level Editor 4 Страница разработчика в Steam Паблик ВК: BekkerDev Studio
|
|
| |
Skrininshot | Дата: Пятница, 22 Декабря 2017, 11:13 | Сообщение # 10 |
частый гость
Сейчас нет на сайте
| AlexanderBekker, Ну теперь нет вопросов, благодарю
What is love Baby don't hurt me Don't hurt me No more...
|
|
| |