하향식 뷰 게임에서 회전 스프라이트를 처리하는 가장 좋은 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/1275482

  •  16-09-2019
  •  | 
  •  

문제

저는 현재 하향식 2D 게임을 작업 중이며 스프라이트와 스프라이트 처리에 대해 많은 것을 배우고 있습니다.내 질문은 최대 32개 방향으로 회전할 수 있는 스프라이트 세트를 처리하는 방법입니다.

현재 특정 개체에는 항상 0도를 가리키는 개체 방향의 모든 애니메이션이 포함된 스프라이트 시트가 있습니다.이제 객체는 최대 32개 방향으로 회전할 수 있으므로 원본 스프라이트 시트로 작업하는 가장 좋은 방법은 무엇입니까?현재 최선의 추측은 개체가 게임에 처음 로드될 때 프로그램이 기본적으로 동적으로 32개의 추가 스프라이트 시트를 생성하도록 하고, 그런 다음 해당 개체 유형의 모든 후속 인스턴스가 해당 스프라이트 시트를 공유하도록 하는 것입니다.

어쨌든 이와 관련된 조언이 도움이 될 것입니다.질문을 바꿔야 한다면 알려주세요. 좀 이상한 질문이라는 걸 압니다.감사해요

편집하다:좀 더 명확하게 설명할 것 같습니다.예를 들어 조각당 5프레임의 2개 애니메이션이 있는 객체가 있다면 생성하고 구성하기 매우 쉬운 스프라이트 시트이며 간단한 2x5 그리드(또는 배치 방법에 따라 5x2)입니다.하지만 문제는 이제 이 2개의 애니메이션이 32방향으로 회전해야 한다는 것입니다.이는 결국 320개의 개별 스프라이트가 존재한다는 것을 의미합니다.나는 성능과 프레임 속도에 관심이 있기 때문에 매 프레임마다 스프라이트를 즉석에서 회전시키는 것은 옵션이 아니라고 말할 것입니다.그렇다면 이 2개의 애니메이션을 구성하는 320개의 스프라이트는 어떻게 구성되어야 할까요?하는 것이 더 좋을까?

  • 32개의 2x5 스프라이트 시트라고 생각하세요.
  • 스프라이트 시트를 개별 프레임으로 분할한 다음 프레임당 32개의 서로 다른 방향으로 배열을 만듭니다(따라서 32개의 방향 스프라이트로 구성된 10개의 배열).
  • 다른....?
  • 상관없나요?

감사해요

도움이 되었습니까?

해결책

일반적으로 프로세서 시간이나 메모리를 희생하고 둘 사이의 균형을 유지해야합니다. 프로세서에 큰 제한이 있거나 비싼 물건을 많이 계산하지 않는 한, 모든 것을 메모리에 넣을 이유는 없습니다. 변환으로 몇 개의 스프라이트를 회전시키는 것은 저렴한 가격으로 메모리에 32 배를 저장하는 것이 가치가 없을 정도로 저렴합니다. 특히 정보는 이미지가 많고 이미지가 비교적 말하기에 많은 메모리를 사용하기 때문입니다.

다른 팁

스프라이트의 32 개의 지시 사항은 32도 회전으로 11.25 도로 변환됩니다.

미리 계산 된 이미지의 수를 8으로 줄일 수 있습니다. 처음 90도 만 계산할 수 있습니다 (11.25, 22.5, 33.75, 45.0, 56.25, 67.5, 78.75, 90.0) 그리고 플립 작업을 동적으로 사용하십시오. 플립은 이미지가 버퍼에서 복사 된 순서 만 변경하기 때문에 훨씬 빠릅니다.

예를 들어, 101.25도 회전하는 이미지를 표시하면 67.5 도의 미리 계산 된 이미지를로드하고 수직으로 뒤집습니다.

나는 당신의 그래픽이 대칭 인 경우에만 작동한다는 것을 깨달았습니다 ;-)

최신 컴퓨터에 대해 이야기 할 때는 아무것도 최적화 할 필요가 없습니다. 스프라이트를 사전 계산하는 데 사용되는 메모리는 확실히 무시할 수 있으며 이미지를 회전시킬 때 CPU 사용이 가능합니다. 그러나 임베디드 장치에 대한 프로그래밍은 중요합니다.

스프라이트 변환의 ​​회전 부분을 설정하여 스프라이트를 직접 회전시킬 수 있습니다.

일부 샘플 코드는 여기에서 Chimp 스프라이트를 확인하세요. 파이게임 튜토리얼.침팬지가 "현기증"을 느낄 때 스프라이트를 회전시킵니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top