Переміщення камери у світових координатах та переміщення персонажа по всьому світу - це найпростіший спосіб вирішити цю проблему. Робота в світових координатах означає, що вам не потрібно робити будь-яких додаткових обчислень, коли вона зводиться до всіх інших систем, які повинні працювати на відносні системи координат, а також розуміють, де вони знаходяться у світових координатах.
Оскільки ви працюєте в 2D, ще однією гарною порадою є зробити просторовий розподіл, найпростішим способом було б створити сітку віртуального світу, це дозволить вам керувати кожною плиткою окремо, об’єднуючи спрайти та інші ресурси на основі плитки, так по суті процес був би:
створити якийсь клас плитки, який може містити граничні координати для плитки та будь-які ресурси, які потрібні певній плитці (спрайти, вороги тощо).
визначтеся з розміром вашого світу та створіть 2D масив (ви можете використовувати один вимір та отримати доступ до нього як 2D) плиток, кожен з яких представляє частину вашого світу з усіма пов'язаними з ним ресурсами.
черпайте ресурси лише з плитки, на якій знаходиться плеєр, та його сусідів.
За допомогою сітки ви можете легко дізнатись, на якій плитці знаходиться гравець, залежно від її позиції відносно початку сітки.
Щоб вирішити проблему, яку ви згадали про камеру, вам потрібно зробити плеєр та камеру двома незалежними системами, де камера не рухатиметься далі, ніж центр крайової плитки, тому коли гравець рухається до цієї плитки, він все ще може подорожувати по всій цілу плитку, оскільки він пов'язаний світовими координатами (тобто більше не зосереджений на екрані), але камера заблокована.