안녕하세요.
2D 게임 개발 중 질문이 있어 글을 작성 합니다.
2D 횡스크롤 형식의 게임이며 왼쪽, 오른쪽 방향 전환만 고려하면 되는 상황 입니다.
Player에는 Hand가 있고 Hand 하위에는 WeaponSprite가 있습니다.
장착하는 무기에 따라 WeaponSprite만 변경 할려고 합니다.
Weapon은 공격 모션일 때 Player의 손 영역 sprite에 움직임에 따라 회전과 위치 값이 변경되어야 합니다. (위에서 아래로 내려치기)
Player의 왼쪽/오른쪽 이동은 y축 기준으로 flip만 적용하면 되지만 Weapon의 경우에는 단순히 y축 filp만 적용하면 안된다는 점을 알았습니다.
그래서 left 애니메이션과 right 애니메이션을 따로 만들어서 방향 전환 시 개별적으로 애니메이션을 출력하도록 변경하였습니다.
여기서 궁금한 점은 원래 left, right 형식의 개별적으로 애니메이션을 따로 만들어서 사용하는 지 궁금합니다.
무기 공격 모션이 복잡하지 않고 y축 기준으로 반전된 형식만 나타나면 되기 때문에 스크립트로 동작 구성이 가능 할 것 같아서요.
보통 이런 경우에는 어떤 방식으로 구현하나요?
현재 개발은 Godot 엔진을 기반으로 하고 있지만 Unity 기준으로 설명 해주셔도 괜찮습니다.
던파처럼 타협하기
댓글 감사합니다! 어떤 말씀이신지 이해가 잘 안가서 그런데 설명을 부탁 드려도 될까요?
그 오른손에 들고 있다가 왼손으로 들고 있다가 이거 말씀하시는 거 맞죠? 대부분 게임들이 그냥.. 게임적 허용으로 넘어가지 않슴?
앗, 아니에요! player 스프라이트를 단순히 y축 기준으로 뒤집기만 하면 왼쪽을 보던게 오른쪽을 보고 있는 이미지가 되지만 무기 스프라이트를 y축 뒤집기만 하면 엉뚱한 위치에 있더라구요. 알고보니 position이나 scale, rotation 등등을 수학적으로 변경해야 하고 단순히 y축 뒤집기만 하면 안된다는 걸 알았어요 그래서 스크립트로 구현하는 것 보다 애니메이션으로 만드는 게 더 편하지 않을 까 해서 left 애니메이션, right 애니메이션을 개별로 만들어서 불러오도록 했어요. 왼손/오른손 이런 건 없고 손은 하나에요! left, right애니메이션을 따로 만들 필요 없이 스크립트로도 동작이 가능 할 거 같다는 게 제 생각이에요. 하지만 어떤 방식을 사용하는 게 더 좋은 방식인지는 모르겠어요.
아하... 그거는 피벗만 맞추면 완벽하게 대칭되서 반전되지 않나요?
무슨 말씀이신지 이해했어요! 아직 입문자 수준이라 pivot이 어디에 쓰이는 지 몰랐는 데 어떻게 해결해야 할 지 딱 알 거 같네요
감사합니다!
혹시라도 저와 같은 문제를 겪는 사람이 있다면... flip_y를 하지 말고 scale.x 값을 변경하세요! flip_y는 자식 노드에 영향을 주지 않지만 scale 값은 자식 노드에도 영향을 줍니다 pivot은 Offset에서 설정 할 수 있어요 댓글로 도움을 주신 분들께 감사합니다~+
보통 스케일x값을 -1로 하거나 rotate y값을 바꾸거나 하는 방식으로 많이 함