그래서 나는 작업중 인 게임에서 문제를 겪었지만 많은 게임에서 발생할 수있는 매우 근본적인 것 같습니다.
내 게임에서는 캐릭터 애니메이션 중에 매우 특정한 시점에 일부 게임 플레이 기능이 필요합니다. 타이틀에서 알 수 있듯이 게임 플레이 관련 이벤트 / 기능 / 액션을 캐릭터 애니메이션의 특정 지점에 동기화하기위한 좋은 기술과 기본 전략이 무엇인지 궁금합니다.
다음은 다양한 유형의 게임에서 내가 말하는 것에 대한 간단한 예입니다.
당신의 캐릭터 는 사수에게 총을 다시 장전합니다 . 캐릭터는 자신의 '재 장전'애니메이션을 재생하지만, currentAmmo 변수를 설정하는 기능 은 매거진을 교체하고 총을 콕킹 한 후 정확한 순간 에만 호출하는 것이 중요합니다 .다시로드 애니메이션 중간에있을 수 있습니다.
A의 턴 기반 RPG 캐릭터 원수의 라인을 직면 줄을 서있다. 공격하라는 명령을 받으면 캐릭터 중 하나가 적 중 한 명에게 달려 가고 점프하고 거대한 검을 휘두르고 서서 다시 점프합니다. 당신은 확실히 있는지 확인하려는 원수가 파괴력 애니메이션이 그 정확한 순간에 손상 까지 실행하고 다시 실행 사이의 어느 시점 - 재생됩니다.
A의 스텔스 게임 , 캐릭터가 몰래 수 있고, 세계에서 컴퓨터와 버튼과 상호 작용합니다. 침투하는 전초 기지의 불빛에 대한 전원 공급 장치를 끄는 버튼이있을 수 있습니다. 액션 버튼을 누르면 캐릭터가 손을 뻗어 버튼을 누른 다음 유휴 자세로 돌아갑니다. 버튼을 누르면 'push_button'애니메이션의 정확한 지점에서 조명이 꺼 지길 원합니다.
분명히, 나의 특별한 경우는 공격하는 동안 내 턴 기반 캐릭터가 앞으로 나가는 애니메이션을 만들었고 애니메이션이 접촉하는 것처럼 보이는 순간에 손상이 적용 되기를 원하는 애니메이션을 만들었습니다. . 턴 기반 시스템을 사용하는 게임 (Final Fantasy 또는 Fire Emblem과 같은 상상)으로 인해 손상 / 치유 / 매직 등이 필요합니다. 실제로 충돌 / 히트 박스를 사용하지 않더라도 각 캐릭터 애니메이션 중에 올바른 시간에 적용됩니다.
나는 인기있는 게임 엔진에서 게임을 만들고 있으며, 지금은 애니메이션 이벤트 를 사용하여 이것을 처리하고 있거나 원하는 결과에 가까운 것을 달성하도록 알립니다. 내 캐릭터는 특정 명령을 수행하고 트리거합니다. 명령 별 애니메이션 (예 : 'attack_command') 및 각 명령에 대한 애니메이션 자산에는 애니메이션 이벤트가 포함되어 있어야합니다. 내 문자에 '콜백'을 알리면 ExecuteCommand 기능이 있어야합니다. 즉 , 캐릭터가 공격 애니메이션을 재생하도록 지시 한 다음, 공격 애니메이션은 피해를 처리해야하는 애니메이션 도중 정확한 순간에 이벤트 / 알림 콜백을 캐릭터에 보냅니다.
솔직히 이것은 현재로서는 효과가 있지만 여기서 큰 그림의 일부를 놓친 것처럼 잘못 느낍니다 ! 이 방법이 잘못되었다고 느끼는 이유 중 하나는 게임 로직을 애니메이션 자산과 연결하기 때문입니다. 애니메이션 애셋에 ExecuteCommand () 이벤트 / 콜백 포함을 잊어 버린 경우 명령이 제대로 실행되지 않고 명령을 실행하지 않고 명령 애니메이션이 완료되었는지 확인하기 위해 추가 코드가 필요합니다. 지저분하고 내 게임 플레이가 자산에 이상한 의존성을 가지고 있음을 의미합니다. 물론 공격 애니메이션 중 특정 지점에서 손상이 발생하기를 원하지만 애니메이션 자산 내에서 게임 플레이 코드를 호출하는 것이 정말 이상합니다.
그래서 여기서 무엇을 간과합니까? 애니메이션 중 특정 시간에 특정 게임 플레이 동작이 발생하기를 원하는 이러한 유형의 상황을 처리하는 데 유용한 일반적인 기술은 무엇입니까?
편집 : 분명히하기 위해, 이것은 엔진 특정 질문이 아니며 엔진 특정 디자인 / 기술을 찾고 있지 않습니다. 사용 된 기술에 관계없이 게임 프로젝트에서 사용할 수있는 일반적인 애니메이션 / 게임 플레이 동기화 기술에 관심이 있습니다.