Это все относительно. На самом деле, вы всегда трансформируете свое мнение относительно вашей фиксированной позиции игрока.
Итак, забыв сейчас об экране, скажем, у вас есть эти 3 шага (представляющих позиции по мере их обновления в каждом игровом цикле):
playerWorldPosition = 50, 100; objectWorldPosition = 60, 200;
playerWorldPosition = 55, 110; objectWorldPosition = 60, 160;
playerWorldPosition = 60, 120; objectWorldPosition = 60, 120;
(как х, у в каждом случае)
Как вы можете видеть, игрок взлетает или прыгает вверх и немного двигается вправо, в то время как объект (может быть powerup) падает прямо вниз. Игрок ловит бонусы. Теперь, как вы рисуете это на экране?
Во-первых, давайте предположим, что вы хотите, чтобы ваш игрок всегда находился в центре экрана. Таким образом, представление привязывается к игроку - это самый простой подход к визуализации. Положение вашего игрока будет всегда screenCentre
(т.е. screenWidth/2, screenHeight/2
). Как тогда вы получаете на экране положение других объектов в мире?
objectScreenPosition = (objectWorldPosition - playerWorldPosition) + screenCentre;
Вы можете видеть, что эта формула работает даже для реального игрока, так (playerWorldPosition- playerWorldPosition) + screenCentre
как равна screenCentre
. Таким образом, вы можете применить одну и ту же формулу к каждой сущности в вашей игре, просматривая список. Вы можете использовать этот простой подход, чтобы использовать его для других целей (например, отставание камеры, случаи, когда вы находитесь в углу уровня и т. Д.)