Суббота, 30 Ноября 2024, 10:38

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Время дня и ночи
toby3dДата: Вторник, 18 Сентября 2012, 14:41 | Сообщение # 1
One-Aloner
Сейчас нет на сайте
Приветствую!
Решил побаловаться с плагом Data, но одну фичу, которую хотелось бы опробовать, я не могу сделать.
Итак:

Дано:
Есть "комната" размером 800х600
Есть два спрайта: солнце и луна.
Есть 4 периода суток, которые синхронизируются с реальным временем:
12:00 - 18:00 Спуск солнца
18:00 - 24:00 Подъём луны
24:00 - 6:00 Спуск луны
6:00 - 12:00 Подъём солнца

Необходимо, чтобы днём вертикально передвигалось солнце (при этом луна была скрыта за горизонтом), а ночью вертикально передвигалась только луна (солнце должно быть скрыто за горизонтом).
Как-то так.


EldrineДата: Вторник, 18 Сентября 2012, 14:52 | Сообщение # 2
заслуженный участник
Сейчас нет на сайте
рисунок не оч понятный...на какую высоту будет спускаться и подниматься солнце и луна?

Модели оружия для CS:S
toby3dДата: Вторник, 18 Сентября 2012, 15:02 | Сообщение # 3
One-Aloner
Сейчас нет на сайте
Quote (Eldrine)
на какую высоту будет спускаться и подниматься солнце и луна?

с 0 до 400 пикселей по Y.


EldrineДата: Вторник, 18 Сентября 2012, 15:07 | Сообщение # 4
заслуженный участник
Сейчас нет на сайте
странно, значение для переменной из объекта data берется тока один раз (событие always)

Добавлено (18.09.2012, 15:07)
---------------------------------------------
походу баг


Модели оружия для CS:S
toby3dДата: Вторник, 18 Сентября 2012, 15:13 | Сообщение # 5
One-Aloner
Сейчас нет на сайте
Quote (Eldrine)
странно, значение для переменной из объекта data берется тока один раз (событие always)

Я делал Always - Set to current time
Обновляется исправно.


DimOkДата: Вторник, 18 Сентября 2012, 19:51 | Сообщение # 6
ONG studio
Сейчас нет на сайте
можно создать глобальную переменную и её устанавливать на часы[set global varible>"переменная" {data.gethour}]
А уже относительно этой переменной устанавливать положения солнца и луны.


Активно пользуюсь Godot Engine
toby3dДата: Вторник, 18 Сентября 2012, 19:56 | Сообщение # 7
One-Aloner
Сейчас нет на сайте
Quote (DimOk)
можно создать глобальную переменную и её устанавливать на часы[set global varible>"переменная" {data.gethour}]
А уже относительно этой переменной устанавливать положения солнца и луны.

Ничего путного из этого не вышло.


EldrineДата: Вторник, 18 Сентября 2012, 20:50 | Сообщение # 8
заслуженный участник
Сейчас нет на сайте
Quote (toby3d)
Ничего путного из этого не вышло.

почему?


Модели оружия для CS:S
toby3dДата: Вторник, 18 Сентября 2012, 20:54 | Сообщение # 9
One-Aloner
Сейчас нет на сайте
Quote (Eldrine)
почему?

Слишком сильные рывки при движении спрайта будут, если синхронизировать время по часам.


EldrineДата: Вторник, 18 Сентября 2012, 21:40 | Сообщение # 10
заслуженный участник
Сейчас нет на сайте
Quote (toby3d)
Слишком сильные рывки при движении спрайта будут, если синхронизировать время по часам.

интересно как это у тебя получилось, не расскажешь, нет?


Модели оружия для CS:S
k0feДата: Вторник, 18 Сентября 2012, 21:50 | Сообщение # 11
BRONX
Сейчас нет на сайте
toby3d, а если по секундно? Это конечно, наверное, глупо, но всё же wacko

мой стрим, который я редко включаю, но зато на нём я делаю игры
DimOkДата: Вторник, 18 Сентября 2012, 22:30 | Сообщение # 12
ONG studio
Сейчас нет на сайте
можно менять положение каждые 10 мин, а можно сделать так чтобы пр смене часа, спрайт плавно двигался на новое место.

Активно пользуюсь Godot Engine
toby3dДата: Вторник, 18 Сентября 2012, 23:28 | Сообщение # 13
One-Aloner
Сейчас нет на сайте
Quote (Eldrine)
интересно как это у тебя получилось, не расскажешь, нет?

Час меняется каждый час (логично, нет?), соответственно, каждый час спрайт будет сдвигаться примерно на 100 пикселей вниз. Выглядит глупо же.
Quote (ЙаСаня)
toby3d, а если по секундно? Это конечно, наверное, глупо, но всё же wacko

Если ежесекундно спрайт будет спускаться вниз, то каждые 60 секунд он будет или возвращаться на стартовую позицию, или уходить ниже комнаты (смотря как запрограммить).
Quote (DimOk)
можно менять положение каждые 10 мин, а можно сделать так чтобы пр смене часа, спрайт плавно двигался на новое место.

Вот это уже интересно. Надо подумать.


TimKruzДата: Вторник, 18 Сентября 2012, 23:40 | Сообщение # 14
старожил
Сейчас нет на сайте
Если я правильно понял проблему, то само перемещение и получение времени уже готово, осталось только совместить?
Quote (toby3d)
12:00 - 18:00 Спуск солнца
18:00 - 24:00 Подъём луны
24:00 - 6:00 Спуск луны
6:00 - 12:00 Подъём солнца
Quote (toby3d)
с 0 до 400 пикселей по Y.

То есть подъём и спуск длятся ровно по 21600 секунд. За это время объект смещается по оси Y на 400 пикселей вверх или вниз. Тогда он должен смещаться на пиксель раз в 54 секунды. Вот. Делай смещение раз в 54 секунды на пиксель.
Либо делай так: раз в минуту вычисляй время в секундах от контрольной точки (6, 12, 18 и 24 часа), дели на 54 и округляй - получишь позицию солнца/луны над горизонтом в пикселях. Например, сейчас на часах 7:00 утра, это 3600 секунд от контрольной точки в 6:00; делим 3600/54 и округляем, получаем 67 пикселей над точкой 0.




Сообщение отредактировал TimKruz - Вторник, 18 Сентября 2012, 23:43
toby3dДата: Пятница, 28 Сентября 2012, 12:40 | Сообщение # 15
One-Aloner
Сейчас нет на сайте
Quote (TimKruz)
То есть подъём и спуск длятся ровно по 21600 секунд. За это время объект смещается по оси Y на 400 пикселей вверх или вниз. Тогда он должен смещаться на пиксель раз в 54 секунды. Вот. Делай смещение раз в 54 секунды на пиксель.
Либо делай так: раз в минуту вычисляй время в секундах от контрольной точки (6, 12, 18 и 24 часа), дели на 54 и округляй - получишь позицию солнца/луны над горизонтом в пикселях. Например, сейчас на часах 7:00 утра, это 3600 секунд от контрольной точки в 6:00; делим 3600/54 и округляем, получаем 67 пикселей над точкой 0.

Сейчас попробую сделать.

Добавлено (25.09.2012, 18:52)
---------------------------------------------

Quote (TimKruz)
Либо делай так: раз в минуту вычисляй время в секундах от контрольной точки (6, 12, 18 и 24 часа), дели на 54 и округляй - получишь позицию солнца/луны над горизонтом в пикселях. Например, сейчас на часах 7:00 утра, это 3600 секунд от контрольной точки в 6:00; делим 3600/54 и округляем, получаем 67 пикселей над точкой 0.

Извиняюсь за долгое отсутствие.

Спуск светил вниз получился, а вот с подъёмом - проблемы.

Добавлено (26.09.2012, 21:47)
---------------------------------------------
Неужели никто не может справиться с этим?

Добавлено (28.09.2012, 12:40)
---------------------------------------------
UP


allxumukДата: Пятница, 28 Сентября 2012, 18:50 | Сообщение # 16
старожил
Сейчас нет на сайте
Надеялся удастся обойтись без моего вмешательства, хотя бы по такому простому вопросу. Про тригонометрию, синусы, косинусы слышали? Элементарные же вещи.
В общем вот исходник: исходник.


Любой дурак может написать программу, которую поймёт компилятор.
Хорошие программисты пишут программы, которые смогут понять другие программисты.
  • Страница 1 из 1
  • 1
Поиск:

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