Народ, кто разбирается в ГМ, ай нид хелп. Вроде по примерам yeo разобрался с антиалайзингом, но вот как сделать чтобы камера следила за объектом сделать не могу(ароде сделал как надо а не работает), может поможет кто, а то работа над Егерем встала?
- 19 марта 2012, 00:26
- 00
Что именно не получается?
В степе любого объекта тебе надо следить за координатами вида (view) и координатами объекта, за которым смотрит камера. И изменять координаты вида, соответственно.
У тебя объект всегда в центре или есть участок, когда камера не двигается, а потом он ее толкает?
Всегда в центре
Допустим, у тебя экран 256 на 200.
Ты в степе, например, ГГ проверяешь, что view_xview + 128 x && view_xview > 0
тогда отнимаешь у view_xview -= скорость_движения_камеры
А вместо х можно брать середину спрайта, зависит от того, где у тебя начальные координаты на спрайте.
Ну и конечно, view у тебя должен быть включен.
max_width это длина комнаты (бэкграунда)
Спасибо, сейчас попробую
Чтото я окончательно запутался, в двух абсолютно одинаковых комнатах(одна дубликат другой) соверешенно разные размеры отслеживаемой области, причем камера не следит за игроком а показывает комнату целиком. Сейчас после каких-то махинаций комната и вовсе черная сразу после запуска.
Варианта два:
1) Ты выкладываешь код и мы на него смотрим
2) Кидаешь мне исходник, я на него смотрю и говорю, что не так
http://dl.dropbox.com/u/50949904/%D0%95%D0%B3%D0%B5%D1%80%D1%8C.gmk
Вот исходник, код в объекте Player в степе первый скрипт, o_surface - последний тот который за масштаб отвечает. Извини что так напрягаю)
http://some-day.net/blog/wp-content/uploads/2012/03/Егерь.rar
Как скачаешь, я удалю.
1. o_surface надо добавлять один раз в самой первой комнате, в которой ничего нет. Просто в пустой комнате без других объектов, создаешь его в коде комнаты, и переходишь в следующую.
2. Поставил масштаб х2 в скриптах, при тройном у меня не помещалось в монитор )) Измени тогда.
3. По возможности, переходи на код и отказывайся от кнопок, чем дальше, тем сложнее будет в них разобраться.
4. Для перемещения лучше не пользоваться speed и прочими вещами. Лучше просто проверять, что клавиша влево нажата и изменять координату по x. То есть if ( keyboard_chek(vk_left) ) { x -= скорость_передвижения }. У тебя сейчас кривовато, поэтому экран дергается при перемещении.
5. Начальные установки в скриптах масштабирования это уже и есть размер view, больше его нигде выставлять не надо (в объекте Player закомментил этот код, чтобы он не выполнялся).
6. Вроде бы все. Если есть силы, попробуй переписать заново всю игру, но чисто на gml. Рано или поздно, все равно придется переходить на него.
Да. Случайно удалил в объекте Player код в проверке столкновения с выходом. Извини.
И еще. Не надо называть объекты зарезервированными словами. Поэтому объект room я переименовал в room1, имей в виду.
Ну и я бы не удалял id объекта из имени, потом будут проблемы с этим.
Скорость передвижения камеры замени на 2, и все будет гладко. Сразу не сообразил. Он двигается-то у тебя со скоростью 2, а камеру ты зачем-то поставил на 4.
все скачал, много работы теперь) Спасибо что помог разобраться
5 пункт в твоем комменте - это я сделал чтобы камера не ехала через всю комнату, есть какой нибудь способ чтобы со страта комнаты камера центровалась на игроке?
А, все, разобрался
Еще один вопрос если можно, как работает затухание и появление в твоем примере? Попытался просто все перенести в свою игру но оно просто переходит в следующую комнату спустя секунду - две
Затухание переводит в другую комнату в событии удаления. Но я вроде довольно подробно описывал это здесь: http://gamin.me/blog/code/7155