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 |
|
| |