
플레이어 무기 장착 표현하기 [유니티 뱀서라이크 11+]
요약
유니티를 사용하여 뱀서라이크 게임에서 플레이어의 무기 장착을 시각적으로 표현하는 방법을 다룹니다. 캐릭터의 팔(왼손, 오른손) 오브젝트를 생성하고, 플레이어의 방향 전환에 따라 손의 위치와 회전값이 적절히 변경되도록 스크립트를 작성하는 과정을 설명합니다.
핵심 포인트
- 2D 스프라이트를 활용한 플레이어 팔 오브젝트 생성 및 레이어 설정
- 플레이어의 방향 반전에 대응하는 손의 위치(Position) 및 회전(Rotation) 제어
- C# 스크립트를 통한 왼손/오른손 구분 및 스프라이트 렌더러 제어
Video: 플레이어 무기 장착 표현하기 [유니티 뱀서라이크 11+]
Channel: Goldmetal
Duration: 19m 43s
Source: subtitle (auto, ko)
Transcript:
[음악] 네 여러분들 반갑습니다 골드메탈입니다 자 저번 시간에 드디어 이제 뱀사라이크 핵심이었던 이제 플레이어의 그 능력 업그레이드 기능을 한번 쭉 만들어 봤는데 무기가 이렇게 잘 나오는 거는 확인됐는데요 근데 이게 뱀프라이크 특징 중에서 어떤 게임은 그 플레이어 캐릭터의 팔을 아예 생략하는 것도 있고 자 이번에 언제든 서버 같은 경우에는 그냥 팔을이 무게에 맞게 인플레이를 달아주는 걸로 한번 해보도록 할 겁니다 자 그거를 만들어 보도록 해요 그래서 자 플레이어를 확대하고 작업을 해보도록 하겠습니다 그래서 왼팔 오른팔 한 개씩 달여 줄 건데요 자 플레이 펼쳐 보시고 여기에서 우클릭하시고 2D 오브젝트 스파이트 한번 만들어 보도록 하겠습니다 일단 첫 번째는 핸드 레프트라고 할 거고요 그리고 스프라이트도 제가 여러분께 미리 준비해 드리는이 프롭스 스프라이트에 쭉 내려가 보시면은 웹폰 0부터 5까지 있습니다 일단 사본 예쁜 영이거든요 그래서 탑을 이렇게 쭉 들어가서 집어넣어 보시고 자 왼팔 같은 경우에 있는 플레보다 먼저 앞으로 나와서 보여줘야 되기 때문에 오더일 레이어가 6일이 됩니다 지금 플레인은 오래됐거든요 그래서 이걸 맞춰 주시고 이렇게 살짝 아래로 한번 내려보겠습니다 그리고 또 약간의 조금 그 좀 생김새를 운치있게 하기 위해서 트랜스폼 여기에서 로테이션을 -35 정도로 조금 내리겠습니다 요런 식으로요 위치는 뭐 적들에게 맞춰 볼 건데요 저같은 경우에는 위치를 -1.7 그리고 y축은 -0.38 정도요 정도로 하겠습니다 자 이렇게 하나 완성되었고요 하나 그대로 컨트롤 뒤로 복사하셔서 이번에는 right 자 오른손을 한번 만들어 볼 거예요 오른손 같은 경우에는 그 원거리 즉 총을 쥘 건데요 그래서 따로 이렇게 할 필요는 없고 총은 몇 포은 3입니다 이렇게 아이언 사이트가 눈 쪽으로 보이게끔 저 같은 경우는 위치를 위치를 0.35 우클릭하셔서 또 새로운 시작 스크립트를 만들어 보겠습니다 이름은 핸드라고 할게요 자 5초간 기다려 주시고 인식이 완료되었으면 더블클릭해서 비주얼 스튜디오를 열어봅시다 역시나 기준이 있던 코드는 다 지워주시고요 새롭게 작성해 볼게요 때는 필요한게 몇 가지급이 있는데요 첫 번째 지금이 핸드가 오른손인지 왼손인지 구분을 찍기 위해서 퍼블릭 불 이즈 레프트라는 변수 하나 만들어 볼 겁니다 자 그 다음에 스프라이트 렌더러를 가져올 겁니다 스프라이트 렌더러 브라이터 이렇게 했고요 자 그런데 이번에는요이 스파르트 렌더러를 그냥 프라이비트가 아니고 퍼블릭으로 공개를 한번 해 볼 겁니다 자 그 이유는 나중에네 번째 시간에서 제가 알려드리도록 할 거예요 자 그런 다음에이 플레이어가 지금 방향이 반전되었는지 안 되는지 사실이 플레이어의 스프라이트만 보면 되죠 그래서 렌더러를 한 번 더 가져오는데 자 이것은 플레이어의 겁니다 어웨이크에서 초기를 해볼 거예요 어떻게 플레이어는 겟 컴포넌트 인트 부모 쪽으로 올라갑니다 뭐를 가지고 와요 스프레텔 렌더를 잡아줍니다 그런데 자기 자신한테도 스프레드 랜드로가 포함되어 있으면은 그것도 포함되거든요 그럼 0은 아니에요 지금 이미 그 손 넣을 수 있는 스프레스를 있기 때문에 그럼 그 다음에 두 번째가 바로 부모의 스프라이트 렌더링 있죠이 점 꼭 참고 바랍니다 자 그런 다음에는 왼손은 방향 오른손은 위치 거기에 대한 정보를 미리 변수에다가 저장을 해 둘까 합니다 벡터3부터 아주 하죠 라이트 포지션이라고 하겠습니다 U 벡터 3 지금 현재 아직 반전되지 않았을 때는 0.35였구요 y축은 -0.15였습니다 제주축은 당연히 여기고요 이거 그대로 복사합니다 그럼 반전 되었을 때는 어떻게요 자 이거는 이름을 리버스라고 더 붙여줄 거고요 지금 위치 바꿔줘야죠 이제 x 축은 -15가 됩니다 0.15 왼손 갈게요 회전이기 때문에 코탄연입니다 quhc면은 코트는 나오죠 레프트 롯데이트 할 겁니다 코튼연 클래스 그대로 가져주고요 점 찍으면 오일러라는 함수가 있습니다 이 오일러 함수 안에다가 넣을 수 있는 값은 x축 y축 대추축인데 우리는 대투축만 돌릴 거죠 그래서 00 하시고 지금 -35 값입니다 자 이거 그대로 복사하셔서요 안에다가 또 붙여주시고 리버스 들어가 주셔야죠 반전된 상태에서는 -130 뭐로 해주시면 되겠습니다 자 두서 봤으면은 잠깐만 내가 보시고요 핸드 가셔서 애드 컴퍼넌트 하시고 핸드 추가하시고 오른손도 이렇게 추가를 해보시길 바랍니다 스프라이트가 비어 있죠 따로 우리가 초기화 로지가 안 나왔기 때문에 직접 우리가 스프레드 렌더러를 들어가셔서 여기다가 넣어 주셔야 됩니다 이거 꼭 해주시길 바라고요 그리고 왼손 같은 경우에는 이제 레프트 자 우리가 부을 거 만들었었죠 꼭 체크하시길 바랍니다 그래야 이게 왼손인지 오른손인지 스크립트에서 구별 가능하기 때문이죠 자 좋습니다 실제로이 플레이어가 반전되었을 때이 손들도 다 반절이 될 수 있도록 반전 컨트롤을 해 줄 거예요 어디에서 레이트 업데이트에서 해 줄 겁니다 그래서 레이트 치시고 레이트 업데이트로 넘어가 보도록 할 거예요 일단은 지금이 플레이어의 상태부터 먼저 간단하게 지역변수로 한번 정리해 볼까요 It's 리버스라고 하겠습니다 플레이어 들고 올게요 지금 이거는 스프레이트 렌더러죠 점 찍고 플립 x를 가지고 옵니다 자 그럼 요건 가져왔는데 지금이 손이 왼손인가 아니면 오른손인가 자 여기에 따라서 로직이 달라지죠 요거는 근접 무기입니다 그렇죠 원거리 무기입니다 차근차근 로직을 만들어 보도록 해요 트랜스폼 근전부기는 회전을 하는데 왜 했죠 돌리겠습니다 근데요 그냥 로테이션 하시면 안 되고 지금이 플레이어 기준으로 통해서 돌기 때문에 꼭 앞에 로컬 로테이션 이렇게 해 주셔야 됩니다 자 그런 다음에이 상태를 보죠 지금 혹시 반전된 상태입니까 플레이어가 이쪽을 바라보고 있다라고 하면은 3학년자 들어갈 거예요 자 물음표 먼저 써 주시고요 레프트는 레프트인데 리버스 된 레프트를 쓰겠습니다라고 요렇게 해주시면 됩니다 자 그다음 콜론 넣어 주시고요 아니면 그냥 원래 지금이 상태니까요 그냥 레프트 로테이션 요거 쓰면 될 것 같습니다 이런 느낌처럼 여기 원글 무기도 하죠 원글의 무기는 위치였죠 트랜스폼의 로컬 포지션 할 거고요 똑같이 이제 리버스가 맞다라고 하면은 자 라이트 리버스 아니면은 그냥 라이트죠 되었어요 자 그럼 보이는 그러한 형태는 지금 완성이 되었는데 지금 스프라이트도 좀 바꿔 주셔야 돼요 보겠습니다 스프라이터 이건 자기 자신 스프라이트죠 플립 y축을 해 주셔야 됩니다 자 그대로 이제 리버스와 동일하게 넣어주시면 되고요 자 반대로 원근이 무기는요 x축으로 발전시키면 됩니다 자 마지막으로 이것도 반전되면은 지금 우리 카메라 기준으로 해서 그 손이 앞에 있는지 뒤에 있는지 그게 바뀌잖아요 그래서이 오더일 레이어를 바꿔주는데 모델 레이어는 스크립트 상에서는 소팅 오더 요거입니다 그래서 소팅 모드를 해주시고요 이것도 리버스인 상태냐에 따라서 갈리는데 자 다시 한번 보겠습니다 지금 왼손 같은 경우에는 반전되지 않았을 때 6이에요 그럼 반전되면은 라이트처럼 4가 되겠죠 반대로 라이트는 지금 현재와 사고 반전되면은 6이 되겠죠 자 그렇게 해주시면 되겠습니다 그래서 근접 무기는 반전 됐을 때 사고 안 됐을 때는 6입니다 이거 그대로 복사하셔서 아래에다가 붙여 주시고요 원근은 무기는 반대로 반전되었을 땐 6 반전이 안 되었을 때는 4 이렇게 해서 약간 좀 원근감 있게 정도를 잘 잡아 주시면 좋겠습니다 됐어요 자 이렇게 해서 스크립트가 깔끔하게 완성이 되었구요 자 고생하였습니다 저장하겠습니다 잠깐 나가 보실게요 그런 다음에 바로 한번 여기서 그냥 테스트 해보도록 하죠 자 이렇게 해서 자 앞뒤 왔다 갔다 해보니까 지금 팔이 지금 플레이어 캐릭터의 반전에 의해서 이쁘게 지금 잘 왔다 갔다 컨트롤 하고 있는 모습을 보고 계십니다 근데 지금 무기가 없는 애도 지금 팔이 있잖아요 그리고 또 지금 우리가 여기 핸드 레프트 라이트하고 강제적으로 우리가 스프라이트를 넣어주기 때문에 이렇게 보이는 거고 사실 그냥 우리가 이제 게임을 좀 더 완성되게 만들려면이 업그레이드를 누를 때 그 무기에 맞게이 손도 그 완성이 되면 정말 좋겠죠 자 그럼 결국 이제 데이터 운동이 필요한데요 그 데이터 연동을 지금부터 해 보도록 하겠습니다 자 그래서 지금까지 했던 내용 다시 한번 잘 보면서 이거 약간 초기화 좀 하겠습니다 핸드 레프트하고 핸드 라이트에 있는이 스프라이트 이제는 빼주세요 자 스프레이 선택하시고 뭐 이제 백스페이스나 딜리트키 지어주면 지워집니다 그리고 요거 두개는요 비활성화 해주세요 자 그러면 원래 우리가 했던 그 캐릭터가 지금 똑같이 됐어요 그럼 이제 데이터를 한번 추가해 봅시다 데이터 같은 경우에는 코드에서 아이템 데이터라는게 있었죠 더블클릭해서 열어 보도록 하겠습니다 자 이렇게 있었는데요 어쨌든 저 수는 무기 아이템에 해당되는 거기 때문에 맨 마지막 자이 웹폰 카테고리에서 한 줄 추가해주시면 되겠습니다 퍼블릭 스프라이트죠 스프라이트 핸드라고 이렇게 한 줄 추가 주시고 바로 저장 들어 있습니다 되었으면 나가주셔서 데이터 폴더에 아이템 0과 1 이렇게 무기죠 무기쪽 보시면은 이렇게 핸드가 생겼을 거예요 자요 칸에다가 외포를 넣도록 합시다 왜 폰 삽은 웹툰 0이고요 자 엽총은 웹폰 3입니다 자 이렇게 넣었어요 데이터를 이렇게 데이터는 이제 완료를 했고요 그럼 이제 요거 가지고 이제 데이터를 어디에 실제 여기 로직에다가 적용을 시켜야겠죠 자 먼저이 왼손과 오른손은 클리어에 자식 오브젝트이기 때문에 플레이어 스크립트 안에서 따로 변수를 만들어서 보완하면 좋을 것 같아요 그래서 변수 만들어 보겠습니다 자 퍼블리스캐너 아래에다가 다시 한번 버블릭 양손이니까 배열로 하겠습니다 이름은 핸즈라고 하고요 초기화 해야겠죠 어웨이크에서 하겠습니다 하는데 두개니까 당연히 개그콘푸는 추가 되겠죠 그리고 자식이니까 칠드런 해주시고요 핸드 해주시고 이렇게 함수를 주면 되는데요 자 일단 여기에서 한번 저장만 살짝 해보시고 테스트를 해보도록 하겠습니다 자 지금이 플레이어 인스펙트 보시면은 플레이 눌러 보아서 잘 들어오는지 볼게요 안 들어왔네요 세상에 영어로 되어 있습니다 왜 그런 걸까요 보시면은 지금 왼손과 오른쪽 오비트는 미리 비활성화 시켜 놨죠 자 이렇게 비활성화 시켜 놓은 오브젝트는요 덱 컴포넌트에서 일단은 제외가 됩니다 그러면 지금 이걸 어떻게 해야 됩니까라고 하면은 정말 쉬운 방법이 있어요 개 컴포넌트 함수 여기 인자값 넣는 부분에다가요 트루를 넣어 주시면 됩니다 지금까지는 한 번도 인적 값을 넣지 않았는데 이번에는 자 불값을 넣었는데요 마우스를 잘 갖다 대시면은 이제 여기 이쪽 부분에 자 불인 클루드 in active라는게 지금 보일 겁니다네 그렇습니다 이제 오늘 이제 수료를 하면은 활성화가 안 된 애들도 개 컴포넌트 할 수 있다라고 우리가 옵션을 추가를 하는 겁니다 자 이렇게 놓고 저장한 다음에 다시 한번 테스트를 해보면요 자 이제는 정상적으로이 핸즈 배열에다가 양손이 다 들어온 거를 확인을 할 수가 있습니다 좋네요 저거를 활용해야죠 어느 부분에서 바로 외 폰이죠 저번 시간에 정말 많이 다뤘던 스크립트인데요 거기에서 어쨌든이 무기가 새롭게 생성이 되면은 이미 초기화 함수가 무조건 실행되죠 그래서 아랫부분에 내려가셔서 여기에서 손도 적용을 하도록 하겠습니다 먼저 손 오베트를 가지고 와야겠죠 and 핸들을 켜고요 플레어 가지고 있었습니다 그래서 가로 열고 닫고 하시구요 타입을 이렇게 쏙 넣어 주시면은 강제 형편 되면서 이렇게 이쁘게 잘 들어있는 모습을 확인을 할 수 있습니다 그래서 만약에 이게 0이 되구요 원 그러면은 이게 1이 되면서 거기에 맞는 왼손 오른손을 여기에 가족이 되겠죠 이해되셨죠 까겠습니다 그래서 가져온 손에다가 일단 스프라이트부터 적용시켜 줘야죠 점 찍고요 스프라이터라고 이미 우리가 퍼블릭으로 걸어 놨었습니다 거기에 스프라이트 속성을 바꿔주면 되죠 무엇으로 우리가 데이터로 추가했던 핸드 스프라이트를 말이죠 자 수수 들어오죠 그러면 이제 마지막을 해야 할 거 자 활성화시키려죠 핸들 좀 찍고 게임 오브젝트 좀 찍고 셋 액티브 하셔서 추루를 놓아주시면 세팅 완료되었습니다 쉽죠 저장하시고요 나가셔서 테스트 해 보도록 하겠습니다 자 아무런 무기가 올 수 있는 손도 다 비활성화 되어 있고요 자 삽 한번 눌러보겠습니다 그리고 총 눌러 볼게요 총 와우 좋습니다 자 이렇게 해서 그 무게 맞는 손을 이렇게 플레이한테 붙여주는 작업 한번 해보았습니다 이제야 진짜 사람 담는 그런 플레이어가 되었네요 자 이렇게 여러분도 한번 해보시고요 자 그 다음에 진짜 이제 레벨 시스템 한번 들어가 보도록 해요 감사합니다
AI 자동 생성 콘텐츠
본 콘텐츠는 YouTube 골드메탈 (Unity 한국어)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기