Пятница, 22 Ноября 2024, 10:04

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Камеры GMS2
FYgamesДата: Суббота, 20 Августа 2022, 21:05 | Сообщение # 1
был не раз
Сейчас нет на сайте
Пытаюсь разобраться с настройкой камер в GMS2 через программирование, но почему-то не устанавливается объект, за которым надо следить. Вот примерный код:
Create
cam = camera_create_view(0, 0, size[0], size[1], 0, oCamera, -1, -1, size[0] / 2, size[1] / 2)

Draw
camera_apply(cam)
draw_text(30, 30, camera_get_view_target(view_current))

Камера рисуется в углу комнаты и надпись гласит "-1", то есть, объект не присвоен. Если же дописать

Create
camera_set_view_target(cam, oCamera)

То ничего не меняется, и -1 всё так же висит на экране. В чём может быть проблема?

UPD:
Понял, что проблема в том, что он не хочет запоминать объект через переменную. Если делать всё напрямую с camera_view, то всё работает.
Но всё же, в чём ошибка с переменными?

UPD 2:
Если удалить изначальную камеру и присвоить ей сделанную, то всё начинает работать. И единственное предположение, которое у меня есть на счёт того, что камера не следит через camera_apply, так это потому что объект слежения не передаётся.

Добавлено (20 Августа 2022, 22:09)
---------------------------------------------
Поигравшись с камерами, я понял, что "Передача настроек", о которой говорится в справке, касается только отрисовки камеры в данном месте, и выполняется только когда camera_apply выполняется кодом. Таким образом, если мы напишем код:

Draw
a = 0;
if (a mod 2 == 0)
{
camera_apply
(cam);
++a;
}

то данная камера будет отображаться лишь каждый второй кадр. Ну а чтобы полностью установить камеру, как я этого хотел раньше, то надо использовать
view_set_camera(view_port, camera)

Сообщение отредактировал FYgames - Суббота, 20 Августа 2022, 21:56
MagicHeroДата: Воскресенье, 21 Августа 2022, 11:29 | Сообщение # 2
участник
Сейчас нет на сайте
У меня в игре где камеру можно двигать пальцем по экрану и менять масштаб сделано вот так.
в контролере камеры в create:
Код
view_camera[0] = camera_create_view(0, 0, width, height);

в контролере камеры в step:
Код
camera_set_view_size(view_camera[0], width*zoom, height*zoom);  // для размера камеры
cam_width=camera_get_view_width(view_camera[0]);
cam_height=camera_get_view_height(view_camera[0]);
camera_set_view_pos(view_camera[0], x - cam_width/2, y - cam_height/2);  // для позиции камеры


x и y это координаты обьекта за которым следует камера, width и height это размеры экрана, zoom масштаб.


Сообщение отредактировал MagicHero - Воскресенье, 21 Августа 2022, 11:35
  • Страница 1 из 1
  • 1
Поиск:

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