Среда, 27 Ноября 2024, 08:18

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Анимация во время перемещения объекта в 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...
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг