아이소 메트릭 게임에서 캐릭터 / 오브젝트 상호 작용 애니메이션은 어떻게 작동합니까?


10

플레이어가 책상, 화이트 보드 등과 같은 일반적인 가구가있는 사무실을 보는 아이소 메트릭 비즈니스 시뮬레이션 게임을 계획하고 있습니다.

게임 내 캐릭터 (직원 / NPC)는 책상에 키보드를 입력하거나 화이트 보드에 글을 쓰는 등의 사전 정의 된 작업을 수행하여 이러한 객체와 상호 작용해야합니다.

특히 관심이있는 것은 다음 시나리오입니다.

캐릭터는 사무실을 가로 질러 (1) 자신의 책상 (2)으로 이동하여 앉아 (3) 시작합니다.

내가 이해 한 바에 따르면 캐릭터 이동 (1)에 대한 스프라이트 시트와 책상 (2)에 대한 정적 스프라이트가 있지만 세 번째 단계가 어떻게 처리되는지 이해하지 못합니까?

책상과 캐릭터가 모두 포함 된 스프라이트가 있습니까? 나는 그렇지 않다고 가정합니다. 그렇지 않으면 모든 책상과 캐릭터 조합에 대한 스프라이트 시트가 필요합니다.

이것은 일반적으로 어떻게 처리됩니까?

편집하다:

다음은 게임 테마 병원의 특정 애니메이션 예입니다. 여기 에서 비디오를 볼 수 있습니다 .

내가 볼 수있는 한, 애니메이션은 여러 단계로 나뉩니다.

1 단계-캐릭터가 책상과 의자 사이를 이동합니다.

여기에 이미지 설명을 입력하십시오

이것은 의자와 책상이 실제로 별도의 스프라이트임을 암시합니다.

2 단계-캐릭터 앉기 애니메이션

여기에 이미지 설명을 입력하십시오

마지막 프레임에서 의자가 책상에 어떻게 더 가까이 있는지 확인하십시오.

3 단계-데스크 애니메이션

여기에 이미지 설명을 입력하십시오

4 단계-애니메이션 일어

앉는 것과 동일하지만 반대로 재생됩니다.

5 단계-멀리 이동

일반 이동 애니메이션을 사용하여 멀리 이동하십시오.

내가 가진 질문은 이러한 애니메이션이 어떻게 가장 잘 분리되고 그래픽 아티스트가 일반적으로 이러한 애니메이션을 어떻게 제공 할 것인가입니다.

캐릭터가 책상에 앉아서 타이핑하는 것이 실제로 3 개의 다른 스프라이트 (데스크, 캐릭터 및 의자)입니까? 비슷한 애니메이션의 스프라이트 예제를 아는 사람이 있습니까?

편집 2 :

가장 큰 관심사는 스프라이트가 실제로 어떻게 보일지에 대한 올바른 기대를 가지고 있다는 것입니다. 나는 그것을 직접 그릴 수 없으므로 누군가에게 지불해야하며 이런 종류의 애니메이션을 수행하는 가장 좋은 방법이 있다고 가정합니까?

답변:


8

짧은 답변? 스프라이트를 결합하지 마십시오.
즉, 결합하면 모든 단일 조합에 대한 애니메이션이 있어야합니다. 의자 하나만 원하면 이상하게 보입니다. 그러나 중형 게임에서 사무실이 확장 될 수 있다고 가정하자. 의자 스프라이트 만 추가 하시겠습니까? 아니면 모든 고용주의 애니메이션을 다시 결합하여 추가 하시겠습니까?

종아리를 만들 수 있습니다.

타이핑 애니메이션을 사용하는 고용주에 6 개의 스프라이트가 있고, 5 개의 다른 의자와 10 개의 다른 고용주 유형이 있다고 가정하십시오.

의자 위에 고용주를 뽑으면 10 * 6 + 5 스프라이트, 65 스프라이트가 필요합니다.
결합하고 모든 조합을 수행하면 10 * 6 * 5 스프라이트, 즉 300 스프라이트가 필요합니다. 간단한 애니메이션을 위해 스프라이트 시트를 크게 만들면 너무 고통 스러울 것입니다!

편집하다:

글쎄, 당신이 방법을 모른다면, 의자를 배경으로, 직원을 활동적인 스프라이트로 정의하는 것이 좋습니다. 당신을 위해 더 쉽습니다.

Background.draw();
Foreach(employer i in staff)
    I.draw();

직원이 당신의 chais (background)와 분리되도록 유지해야합니다. 또한 직원 애니메이션의 프레임도 무기한으로 업데이트하십시오.

EDIT2 :

편집 내용과 샘플을 보았습니다. 나는 같은 접근법을 유지할 것입니다. 모든 다른 스프라이트 의자는 어쨌든 캐릭터 앞에 갈 것입니다!

의자를 더 가깝게 이동하려면 위치를 일부 픽셀 위아래로 업데이트하거나 스프라이트 자체에서이 작업을 수행하십시오.

Z align에 대해 이해하십니까? 그것은 많은 일을해야합니다 ...

의자의 일부는 캐릭터 뒤에 있고 나머지는 앞에 나타납니다. 스프라이트 하나 인 경우 어떻게 가능합니까? Z 정렬!

효과를 달성하는 두 가지 방법. 마스크를 유지하거나 (쉽지 않은) 스프라이트를 두 개로 나눕니다.

시간이 많지 않기 때문에 두 번째 방법에 대해서만 언급하겠습니다. 의자 스프라이트를 앞쪽에있을 부분과 뒤에있을 부분을 잘라 내야합니다. 그런 다음 같은 위치에 두십시오. 쉬운! 여기서하는 것은 Z Align입니다. 뒷부분은 뒷부분, 뒷부분은 캐릭터, 앞 의자 부분은 앞쪽에 있어야합니다.

사용중인 lib / api / sdk / toolset을 모르겠습니다. 그러나 가장 많은 방법은 다음과 같습니다. az Align factor를 사용하여 뒤에 무엇이 있거나 앞에 있는지 또는 먼저 무엇을 뒤에, 마지막에 무엇이 마지막에 왔는지 결정합니다. 따라서이 점을 명심해야합니다.


예, 고마워요 나도 그렇게 생각했지만 애니메이션이 어떻게 달성 될지 이해하지 못합니다. 내가 볼 수있는 예를 알고 있습니까? 그게 가장 좋을 것입니다!
Patrick Klug

코드 또는 게임을 의미합니까? 게임을 원한다면 Kairosoft의 Android 및 iOS 용 Game Dev Story를보십시오. 내가 모르는 코드 예제 ...
Gustavo Maciel

답변이 수정되었습니다. 그것이 귀하의 요구에 맞는지 확인하십시오 (:
Gustavo Maciel

특정 예제로 질문을 업데이트했습니다. 스프라이트가 어떻게 생겼는지 또는 어떤 그래픽 아티스트가 제공하는 데 관심이 있습니다. GameDev Story의 애니메이션은 내가 생각한 것에 비해 너무 단순합니다.
Patrick Klug

편집 2를 읽으십시오. 답변을 개선했습니다. 귀하의 요구를 충족시키기를 바랍니다.
Gustavo Maciel

2

대안은 3D API (OpenGL)가 다각형이 겹치지 않도록하는 방법과 유사한 스프라이트에 깊이 / Z 버퍼 이미지를 포함시키는 것입니다. 기본 스프라이트 게임의 경우 0/1 비트 (흑백 비트 맵)의 무리 일 수 있습니다 (원하는 경우 더 많은 수준의 깊이를 사용할 수 있음).

'데스크 체어'스프라이트가 결합되어 있고 의자가 해당 정사각형의 다른 스프라이트 (예 : 사람) 앞에 나타나길 원한다면 책상이 '백색'인 동안 문자 'Z'의 Z 버퍼 버전을 '검정색'으로 만듭니다. .

해당 타일에서 동적 스프라이트 (사람)를 렌더링하면 깊이 버퍼에 어떤 색상이 있는지 확인합니다. 0 (검정색) 인 픽셀의 경우 사람 스프라이트 픽셀 그리기를 건너 뛰고 의자를 그대로 둡니다.

한 번에 모든 픽셀 1을 확인하는 대신 확인하는 가장 간단한 방법은 스프라이트 픽셀에 깊이 버퍼 값을 곱하는 것입니다. 물론 알파 색상 채널이없는 한 색상 키를 눌러야합니다.

이것은 물론 오버 헤드를 추가합니다 (책상 의자와 같이 여러 깊이 수준이 필요하지 않은 경우에는 건너 뛸 수 있음). 또한 애니메이션을 동기화해야합니다 (예 : 사람이 책상 의자 애니메이션과 일치해야 함). 별도의 스프라이트를 여러 개 갖는 것과 동일한 유연성을 제공하지는 않습니다.


: 내 편집 (에 언급 한 마스크 깊이 층
구스타보 마시 엘
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.