Best answer
2D 플랫 포머 (side to side)를위한 가장 간단한 방법 이렇게하면 플레이어가 변형되고 스프라이트 렌더러가 그런 식으로 뒤집고 번역 속도도 그렇게 뒤집 힙니다. 적에 대한 플랫 포머에는 실제로 길 찾기가 없습니다. 예를 들면 다음과 같습니다.
[SerializeField] Transform player;
[SerializeField] SpriteRenderer rend;
[SerializeField] float speed;
void Update()
{
if(player.pos.x < transform.position.x)
{
renderer.flipX = true;
transform.Translate(new Vector2(-speed, 0f));
}
else
{
renderer.flipX = false;
transform.Translate(new Vector2(speed, 0f));
}
답변
시간이있을 때 (= 작업 사이 : d) 작업했던 프로젝트 중 하나는 매우 고전적인 구식 저수준 2d였습니다. 스프라이트 기반 게임 엔진, 플랫 포머 등에 적합합니다. 그 이유는.
실제로 2D 엔진을 직접 작성하는 것은 매우 재미있는 일입니다. 몇 달 안에 혼자서 일하다 몇 년이 넘었 기 때문에 게임을 만들 수없는 파이 인 더 스카이 프로젝트 인 대형 3D 엔진과는 다릅니다. 자체 2D 엔진을 굴리는 것이 다소 시대 착오적이라면 여전히 상당히 합리적입니다.
대부분 내 게임 엔진 (일반 Win32 위에 C ++로 작성)은 다음과 같이 구성되었습니다.-그래픽 클래스 (낮은 수준의 캔버스) 선, 다각형 또는 원시 픽셀을 그릴 수 있음)-스프라이트 클래스, 이미지의 조각을 결합하여 애니메이션 및 스프라이트를 그리고 비트 맵 텍스트를 그리기위한-타일셋 클래스, 타일셋 배경을 관리하기위한-간단한 구성 요소가있는 UI 클래스 계층 ( 버튼, 패널, 목록 상자 등)-간단한 물리 엔진 (멋진 것은 아닙니다. 물체를 약간의 속도로 움직이고 다른 물체 및 풍경과의 충돌을 유발할 수있는 기능)-간단한 사운드 클래스-메인 게임 이 모든 것을 하나로 묶고, 마우스와 키보드 메시지를 보내고, UI 객체에 이벤트를 보내고, 모든 스프라이트를 렌더링하고, 모든 물리 객체를 업데이트하는 루프 / 게임 상태 머신. 기본적으로 "심장"입니다. 경기. 기본 게임 (암시 적으로 게임 엔진)의 작동 방식을 이해하려면이 영역, 게임 상태 관리, 게임 이벤트 및 주요 업데이트 / 드로잉 루프에 중점을 둡니다. -플랫폼에 의존하는 Win32 그리기 코드를 작은 파일로
또한 .NET / C ++ / CLI를 사용하여 파일 변환기, 타일셋 편집기 및 애니메이션 편집기를 작성했습니다. 실제로 대부분의 작업은 스프라이트 및 물리 클래스와 스프라이트 편집기를 작성하는 것이 었습니다.