2D 캐릭터가 실제 상황에서 다양한 장비를 사용할 수 있도록하는 가장 좋은 방법은 무엇입니까?


14

2D 게임을 만들고 싶지만 RPG와 같은 다른 조합으로 다양한 장비를 착용하고 싶은 캐릭터를 갖고 싶습니다.

따라서 사용자가 어깨와 바지를 변경한다고 가정하면 플레이어에게 표시되어야 하며이 모든 다른 장비는 다른 캐릭터 동작 (타격, 타격, 철자법 등)을 따라야한다고 가정 해 봅시다.

가장 좋은 접근법 / 알고리즘 / 아키텍처를 알고 싶은 몇 가지 문제가 있습니다.

1-스프라이트 또는 애니메이션

각 액션 애니메이션에서 각 장비마다 다른 스프라이트를 만들어야합니까?

장비 스프라이트를 가지고 회전 및 번역과 같은 코드에서 직접 애니메이션을 적용하는 것이 더 낫습니까 (Flash의 트윈과 같은 것을 사용하여)?

더 나은 다른 옵션이 있습니까? (위의 아이디어가 정말 마음에 들지 않습니다)

2-위치

캐릭터의 움직임 중 하나가 플레이어의 시야를 직접 바라보기 시작하지만 오른쪽을 플레이어에게 보여주는 움직임을 종료한다고 가정 해 봅시다.

예를 들어 머리와 같이 사용자의 한 부분을 고려하면 앞에서 시작한 다음 왼쪽으로 돌아갑니다.

각 헤드 장비 (헬멧, 캡 등)에 대해 최소 3 개의 다른 위치를 의미합니다.

이것은 확실히 # 1 질문의 답에 영향을 미칩니다. 그것을 달성하는 가장 좋은 방법은 무엇입니까?

3-레이어

팔을 벌린 채 360도 회전하는 캐릭터 이동을 고려해 봅시다. 애니메이션의 시작 부분에서 그의 오른손은 사용자의 시야에 가깝고, 이동 중일 때는 아마도 애니메이션에서 캐릭터의 몸 뒤에있을 것입니다.

# 1 질문에 대한 옵션이 무엇이든,이 스프라이트 또는 애니메이션이 플레이어의 뷰에 더 가깝게 시작하고 나중에 플레이어의 뷰에서 멀리 떨어지도록하려면 일종의 레이어 모델을 사용해야합니다.

그렇게 할 수있는 좋은 방법이 있습니까?

질문이 너무 길고 이해하기 어렵다는 것을 알고 있습니다. 어떤 도면을 설명하는 것이 더 좋을 것이라고 생각하면 알려주십시오. 그러면 시도하겠습니다.


당신의 예술이 어느 수준에 도달하고자합니까? 레트로 픽셀 아트처럼? 또는 저의 반응을 조정하는 데 실제로 도움이되는 기존 아트가 있다면 HD 스프라이트입니다.
Jesse Dorsey

안녕하세요. 사실 나는 그것을 "예술 독립"질문으로 생각하고 있습니다. 이번 주말에 이해하기 쉽도록 몇 가지 설명을 드리겠습니다. 감사합니다
homemdelata

답변:


8

아마도 2D 스켈 레탈 애니메이션 시스템을 찾고있는 것 같습니다. 불행히도 상용 시스템은 3D-gfx-but-2D- 게임 트렌드로 대체 되었기 때문에 유감스럽게 생각합니다.


+1 캐릭터를 3D로만 만들면 훨씬 쉽습니다.
knight666

"3D-gfx-but-2D-game"의 경우 어쨌든 내가 언급 한 솔루션 중 하나를 고려해야합니다. 조각 10 애니메이션을 생성합니다 :(
homemdelata

실제로는 골격에 부착 지점이 있으며 필요한 모든 것을 떨어 뜨릴 수 있습니다.
coderanger

2
괜찮은 편집기를 포함하여 XNA 용 (오픈 소스) 간단한 2D 골격 애니메이션 라이브러리를 만들었습니다. 확인 youtube.com/user/srekel#p/a/u/0/46LIoFNdG_4youtube.com/user/srekel#p/a/u/1/8sYkeu5k7XE
Srekel

이것은 거의 정답입니다. 실제로 당신은 내가 찾고있는 것이 2D 애니메이션을위한 3D 골격 시스템이라는 것을 알았습니다. 이에 대한 알고리즘을 찾아야합니다 (존재하는 경우)
homemdelata

8

Zorba가 말했듯이 대부분의 레트로 게임은 모든 단일 장비에 대해 멀티 프레임 애니메이션을 필요로하기 때문에 스프라이트와 함께이 작업을 수행하지 않았습니다.

일부 "게으른"대안들 :

  • 완전히 다른 스프라이트를 만드는 대신 기어를 팔레트 교환하십시오.
  • 애니메이션을 적용하는 신체의 유일한 부분이 기어에 부착되지 않은 부분이되도록 캐릭터를 그립니다. 마찬가지로 캐릭터가 갑옷을 한 번만 입을 수 있다면 대신 헬멧으로 만들고 머리를 움직이지 않고 몸 전체를 자유롭게 움직일 수 있습니다.
  • 메인 게임 화면에서 캐릭터에 단일 스프라이트를 사용하되 정적 화면이있는 보조 화면에 장비를 표시하십시오. 그러면 애니메이션에 대해 걱정할 필요가 없습니다.

2

Ultima 시리즈와 같은 오래된 게임에서는 실제로 가능한 모든 캐릭터 포즈로 하나의 장비를 그릴 것입니다. 폐색은 기어를 그리지 않거나 (왼쪽 장갑이 플레이어 스프라이트 뒤에있는 경우 걱정할 필요가 없음) 기어를 앞뒤로 순서대로 그려서 처리합니다.

분명히 이것은 매우 노동 집약적이었습니다. 결과적으로 그 기어의 팔레트 스왑 및 팔레트 수정 버전이 많은 독특한 기어 조각이 상대적으로 적었습니다.

현대 게임에서는 3D 캐릭터를 만드는 것이 좋습니다. 2D 모양의 예술을 원하거나 플랫폼에 실제 3D에 대한 마력이없는 경우 3D로 모든 것을 모델링하고 렌더링 한 다음 최종 결과를 직접 조정하는 것이 좋습니다.

또는 조정이 필요하지 않고 전체 3D에 대한 마력은 없지만 거대한 스프라이트 라이브러리를 제공하지 않으려는 경우 3D 모델을 패키징하여 알 수있을 때 실시간으로 텍스처로 렌더링 할 수 있습니다 게임 내 모델이 등장합니다.


다른 답변에 대해 언급 한 것과 똑같습니다. 어쨌든 언급 한 솔루션 중 하나를 고려해야합니다. 그렇지 않으면 10 가지 괄호 조각이있는 동일한 가슴 조각과 같은 모든 항목 조합에 대한 스프라이트가 필요합니다 10 애니메이션을 생성합니다 :(
homemdelata

2
런타임에 "엔드 스프라이트"를 합성합니다. "플레이어"에 대한 스프라이트가없고 각 애니메이션 프레임에 대해 렌더링되는 스프라이트 목록이 있습니다. 플레이어가 오른쪽을 향하고 있다면 "왼쪽 장갑", "왼쪽 팔 보호구", "플레이어 캐릭터", "부츠", "바지", "바디 아머", "헬멧", "오른쪽 팔 보호구"를 렌더링합니다. , "오른쪽 장갑"순서로. 그런 다음 공중에 떠 다니는 각 기어를 독립적으로 애니메이션합니다.
ZorbaTHut

1

제임스 다 실바의 책에서 그가 식기 세척기 : 죽은 사무라이를 어떻게했는지 설명합니다. KISS가 이것을 어떻게 해결할 수 있는지 보여줍니다. 3D 또는 2D 스켈 레탈 애니메이션 사용에 대한 제안은 유효하며, 같은 영역에서도 마찬가지입니다.


링크를 추가 할 수 있습니까?
homemdelata


0

이것은 훌륭한 질문이지만 당신이 스스로 대답했다고 생각합니다. 뼈를 바꾸는 뼈를 지원하는 2D 뼈 시스템이 필요합니다. 따라서 캐릭터가 회전함에 따라 다른 팔다리가 서로 앞뒤로 갈 수 있습니다. 또한 스프라이트를 4 개 또는 8 개 각도 (또는 필요한 많은 각도)로 그려야합니다. 팀의 기술에 따라 이러한 자산을 3D로 작성하고 필요한 각도에서 렌더링하는 것이 더 쉬울 수 있습니다.

3D 엔진을 사용하는 것도 좋은 해결 방법이지만 자체 해결해야 할 과제도 있습니다.


그래, 거의 다됐다. 다른 대답은 정확하지만이 답변도 유효합니다. 내가 다른 것에 대해 언급 한 것처럼, 나는 2D 애니메이션을위한 3D 골격 시스템이 필요합니다 :)
homemdelata
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.