![]() |
Координаты фона в зависимости от координат уровня
Здравствуйте.
Цель: Сделать так, чтобы при движение уровня влево\вправо двигался фон влево\вправо, но с меньшей скоростью, так как ширина фона в два раза меньше, чем ширина уровня. Получится, что я увижу полностью весь уровень и полностью весь фон. Ширина фона: 2000px. Ширина уровня: 4000px. Ширины сцены: 400px. Мне это сделать удалось таким путём: Код AS3:
Теперь сам вопрос: Как можно сделать так, чтобы фон двигался влево\вправо НО без системы увеличения\уменьшения координат? То есть не прямо задавать "b.x +-= 2", а другим способом: "b.x = какой-нибудь секретный алгоритм". |
Ничего секретного.
Элементарный способ. Задаёте точку в пространстве, указывающее положение "камеры": Код AS3:
Код AS3:
level - спрайт контейнер со всей графикой уровня. background - задний фон. |
Уровень проходит путь 4000 - 400 = 3600
Бэкграунд должен пройти 2000 - 400 = 1600 Коэфициент = 16/36 = 4/9 фон.х = уровень.х * 4 / 9 |
Цитата:
|
Dip52,
Точка - это и есть "камера". Да, тупо двигая камеру, весь контент будет позицианироваться относительно её позиций. Не забудьте поместить все объекты в общий контейнер. Двигать нужно контейнер. |
Вложений: 1
Цитата:
Код AS3:
|
Двигать нужно камеру а не мир! Камера перемещается в мире:
Код AS3:
Код AS3:
|
Цитата:
|
MikroAcse,
Нет не лучше. Координаты камеры могут меняться более 1 раза за кадр. Ею могут манипулировать разные объекты кода. И как вы определите событие изменения позиций камеры? Создать событие и подписать главный визуализатор на собственную камеру? Или дёргать internal метод оповещающий об изменений позиций? Вот и усложнили в 10 раз без надобности и с нулевым, если не отрицательным приростом производительности. У камеры есть x, y. Их могут менять все кому это нужно. Перед рендером каждого кадра, визуализатор считывает её позицию и отображает текущий мир соответственно. |
Tails, нет, я не имел ввиду моментальное изменение. Я имел ввиду метод update(), который нужно вызвать после всех манипуляций.
Хотя да, лучше будет интерфрейм, который проверяет является ли _update == true и обновляет. |
| Часовой пояс GMT +4, время: 16:20. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.