세상을 움직일까요 아니면 플레이어를 움직일까요?


11

플레이어의 목표는 아래로 닿기 전에 수평 축으로 가능한 한 멀리 여행하는 측면 스크롤 게임 개발을 시작하려고합니다. 수평 축으로 다시 이동할 필요가 없습니다.

OpenGL 및 Box2d를 사용하는 Android 용 AndEngine으로 이것을 개발하고 있습니다.

시작하기 전에 중요한 것을 결정해야합니다. 플레이어 주변의 세계를 사용하여 움직임을 시뮬레이션하거나 실제로 플레이어를 움직여서 게임 엔진의 카메라 기능을 따라야합니까?

두 방법 모두 서로 다른 강점과 단점이있는 것으로 보이므로 어느 것이 가장 적합한 지 잘 모르겠습니다. 예를 들어, 길을 따라 파워 업을 쉽게 추가하고 멋진 애니메이션 배경을 만드는 것은 무엇입니까?

감사!


2
카메라를 움직입니다.
Jonathan Dickinson

1
카메라를 사용하지 않으려는 특별한 이유가없는 한 (이미 작성된 카메라) 플레이어와 카메라를 움직여야합니다. "파워 업"을 추가해도 어떤 식 으로든 영향을받지 않아야합니다.
Christopher Horenstein

답변:


9

카메라를 움직입니다 (플레이어에 연결된). 나는 당신의 세계에 적과 같은 여러 물체가 있다고 상상할 것입니다. 세상을 움직일 때 세상이 움직일 때마다 위치를 업데이트하려면 이러한 모든 개체를 반복해야합니다.

플레이어를 옮기고 카메라를 플레이어에 연결하면 리소스 사용량이 최소화됩니다. 게임은 렌더링 단계에 도달하고 모든 프레임처럼 모든 것을 반복하며 위치-camera.position에 그립니다. 이 경우 카메라 위치는 항상 플레이어 위치와 같습니다.


물론 물체가 적이라면, 고리를 반복 할 필요가 없으며 업데이트 방법으로 월드 움직임을 추가하면됩니다.
SirYakalot

1
+1. camera.setChaseEntity(player);이것을 달성하기 위해 사용하십시오 .
MartinTeeVarga

6

나는 항상 카메라를 움직여서 추천 할 것입니다-이것을 선호하는 많은 이유가 있지만, 가장 중요한 것은 아마도 이것으로 요약됩니다.

  1. 카메라와 플레이어를 움직이면 화면을 스크롤하기 위해 업데이트해야하는 두 개의 개체뿐입니다 .

  2. 화면을 스크롤해야 할 때마다 전 세계를 움직이면 업데이트해야 할 알 수없고 많은 수의 엔티티 가 포함됩니다.


나는 동의하지만, 적의 계급에 세계 운동을하는 + = '줄을 추가하는 것은 상당히 사소한 것이라고 덧붙일 것입니다.
SirYakalot

@AsherEinhorn 각 노드가 부모의 변환을 공유하고 단순히 루트 노드 (예 : "세계")를 이동하면 다른 모든 것이 자동으로 변환되는 장면 그래프와 같은 시나리오에 대해 이야기하고 있다고 가정합니다. 다른 모든 경우에, 세상을 움직이는 것은 세상의 모든 것을 움직이는 것을 의미하기 때문에 -그것은 나의 포스트의 요점이었습니다.
David Gouveia

세계의 움직임이 플레이어에 반비례한다면. 즉, 당신은 앞으로 나아가고, 세계는 뒤로 움직입니다. 그러면 여러분은 플레이어가 모든 게임 오브젝트로 이동할 수 있습니다. 나는 둘 다 작동하게하는 사소한 방법이 있다고 말하는 것에 동의합니다.
SirYakalot

4

그것은 정말 사소한 일이며, 당신이 묘사 한 것과 실제로 차이를 만들지 않습니다.

카메라와 플레이어를지나 배경을 움직이거나 플레이어와 카메라를 함께 움직입니다. 배경을 움직이면 할 일이 덜 있다고 가정합니다.

비록 당신이 배경을 움직이면 픽업과 적의 부모를 불러야한다고 생각하지만, 사소한 것이지만 생각해야 할 것입니다.

더 현실적인 방법으로하는 일을 좋아하기 때문에 개인적으로 플레이어를 움직일 것입니다.


0

다른 답변도 좋지만 다른 프로젝트에 대해 동일한 결정을 내리려는 사람을 돕기 위해 더 나은 점을 추가하고 싶습니다.

플레이어 이동 :

  • 간단합니다. 다른 모든 것은 정적 (ish)이므로 간단한 용어로 플레이어를 이동하기 위해해야하는 유일한 것은 player.x += 5;(의사 코드)입니다.
  • 대부분의 사람들에게 "더 나은 클릭". 게임을 할 때는 항상 다른 방향이 아니라 플레이어가 움직이는 것으로 생각합니다. 따라서 "세계가 아닌 플레이어가 움직여야한다"라고 생각하기가 더 쉬워서 누군가가 머리를 정리하기가 더 쉬워 질 수 있습니다.
  • 플레이어의 위치를 ​​쉽게 추적 할 수 있습니다 (위치는지도의 좌표이기도 함)

세상을 움직이는 :

  • 게임이 충분히 큰 경우 플레이어의 위치가 항상에 매우 가깝기 때문에 월드 중심에서 너무 멀리 이동하여 오버플로 / 언더 플로에 대해 걱정할 필요가 없습니다 0.
  • 위와 유사하게 3D 계산이 혼란 스러우면 화면에 보이는 모든 것이 매우 가까이 있어야하기 때문에 부동 소수점으로 부정확 한 결과에 대해 걱정할 필요가 없습니다 0.
  • 올바르게 수행하면 "무한한"세상을 만들 수 있습니다.
  • 플레이어를 수동으로 추적해야하는 경우 플레이어의 위치는 항상 플레이어가지도의 왼쪽 상단에 있는지 또는 오른쪽 하단에 있는지 알기 위해 플레이어가 화면의 어디에 있는지 (킨다) 나타내는 작은 값입니다. 어떤 식 으로든 그 사실을 추적해야합니다.

하루가 끝나면 프로젝트에 따라 다릅니다. 누군가 오리지널 마리오 클론을 만드는 경우, 세상을 움직이는 것은 복잡 할 수 있지만 플레이어를 움직이는 것은 실제로 많은 문제를 일으키지 않습니다. 거대한 오픈 월드 게임을 만들고 싶다면 대신 세상을 움직이는 것이 좋습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.