Среда, 25 Декабря 2024, 05:36

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Помогите Сделать движение плавно
Tim34Дата: Четверг, 18 Октября 2018, 20:39 | Сообщение # 1
был не раз
Сейчас нет на сайте
Хочу сделать игру, но нужен
объект(остров)
Чтобы двигался вверх и виз с промежутком 2 секунды
слово парил

Добавлено (18 Октября 2018, 20:39)
---------------------------------------------
*вниз


я могу сделать то что делают другие,
вопрос зачем?
UNIT02_GAMESДата: Четверг, 18 Октября 2018, 21:37 | Сообщение # 2
частый гость
Сейчас нет на сайте
Tim34, ничего не понятно по описанию, но попробуй сделать по такой схеме - Движение вверх, после alarm[0] = 2(секунды)*room_speed смена направления. И потом заново.

///
Tim34Дата: Суббота, 20 Октября 2018, 10:32 | Сообщение # 3
был не раз
Сейчас нет на сайте
Надо чтобы Объект для меня ОСТРОВ, двигался вверх плавно и останавливался а потом вниз тоже плавно

я могу сделать то что делают другие,
вопрос зачем?
Abel399Дата: Суббота, 20 Октября 2018, 13:54 | Сообщение # 4
Surpass your limits. Right now.
Сейчас нет на сайте
Можете погуглить "tween functions" / "easing". В вашем случае вроде должна подойти "easeOutQuad" или "easeInOutCube".
Поиграйтесь здесь.
Готовый ассет здесь.

Нативная реализация easeOutQuad может выглядеть так (синтаксические ошибки исправите сами):

Create:
Код

isMoving = true;
movingTime = 2 * room_speed;
delay = 2 * room_speed;
steps = 0;
radius = -256;


Step:
Код

var progress;

if (isMoving) {
    steps += 1;
    progress = steps / movingTime;
    if (progress >= 1) {
        isMoving = false;
        alarm[0] = delay;
    } else {
        y += progress * (progress - 2) * radius;
    }
}


Alarm[0]:
Код

isMoving = true;
radius = -radius;


Ninja Slayer - 2D Physics Puzzle [cancelled]

Сообщение отредактировал Abel399 - Суббота, 20 Октября 2018, 14:03
drcrackДата: Суббота, 20 Октября 2018, 14:55 | Сообщение # 5
старожил
Сейчас нет на сайте
y = sin(time)
nikOlay_GMДата: Воскресенье, 09 Декабря 2018, 20:44 | Сообщение # 6
был не раз
Сейчас нет на сайте
Можно полегче с image_xscale и image_yscale.
Пример:
Step:
Код

image_xscale += 1;
image_yscale += 1;
if (image_xscale == 10 && image_yscale == 10 || image_xscale >= 10 && image_yscale >= 10) {
image_xscale += 10;
image_yscale += 10;
} else if (image_xscale == 30 && image_yscale == 30 || image_xscale >= 30 && image_yscale >= 30) {
image_xscale += 20;
image_yscale += 20;
} else if (image_xscale == 50 && image_yscale == 50 || image_xscale >= 50 && image_yscale >= 50) {
image_xscale = 50;
image_yscale = 50;
image_xscale -= 20;
image_yscale -= 20;
} else if (image_xscale == 30 && image_yscale == 30 || image_xscale >= 30 && image_yscale >= 30) {
image_xscale = 30;
image_yscale = 30;
image_xscale -= 10;
image_yscale -= 10;
} else if (image_xscale == 10 && image_yscale == 10 || image_xscale >= 10 && image_yscale >= 10) {
image_xscale = 10;
image_yscale = 10;
image_xscale -= 10;
image_yscale -= 10;
}


nikOlay_CSGO,UnderTale___GamER
AlexanderBekkerДата: Понедельник, 10 Декабря 2018, 18:35 | Сообщение # 7
BekkerDev Studio
Сейчас нет на сайте
В Create объекту острова:
Код
time = 0;

В Step:
Код
y = ystart + sin(time++) * 20; // 20 — высота, но поскольку sin возвращает и отрицательные значения (здесь от -20 до 20), то высота будет равняться 40

Если потребуется уменьшить скорость движения, вместо time++ напишите time++ * 0.5 — этим вы уменьшите скорость вдвое.


Разработчик, композитор и издатель инди-игр в Steam.
Редактор карт: BekkerDev Level Editor 4
Страница разработчика в Steam
Паблик ВК: BekkerDev Studio
  • Страница 1 из 1
  • 1
Поиск:

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