[클론코딩_유니티_골드메탈] 뱀서라이크 따라만들기 11+ (플레이어 무기 장착 표현하기)

2023. 5. 10. 13:21·게임개발/언데드서바이벌_골드메탈_클론코딩

https://www.youtube.com/watch?v=NE5j8YmJ5Ds&list=PLO-mt5Iu5TeZF8xMHqtT_DhAPKmjF6i3x&index=15&t=35s 


1. 양손 배치

왼손 오브젝트 추가 Player > 우클릭 > 2D Object > Sprites > Triangle (Hand Left)

Sprite weapon 0 연결

스프라이트 렌더러의 Order in Layer를 플레이어(5)보다 높게 설정

왼손은 Z축 회전으로 표현 (-35)

오른손 오브젝트 추가(Hand Right, weapon 3)


2. 반전 컨트롤 구현

Hand.cs 생성

public class Hand : MonoBehaviour
{
    public bool isleft;
    public SpriteRenderer spriter;

    SpriteRenderer player;

    Vector3 rightPos = new Vector3(0.35f, -0.15f, 0);
    Vector3 rightPosReverse = new Vector3(-0.35f, -0.15f, 0);
    Quaternion leftRot= Quaternion.Euler(0,0,-35);
    Quaternion leftRotReverse = Quaternion.Euler(0, 0, -135);

    private void Awake()
    {
        player = GetComponentsInParent<SpriteRenderer>()[1];
    }

}

오른손, 왼손 구분을 위한 bool 변수 선언

SpriteRenderer을 public으로 선언

플레이어의 스프라이트렌터거 변수 선언 및 초기화

player = GetComponentsInParent<SpriteRenderer>()[1];

- 0번은 자기 자신

 

오른손의 위치를 Vector3 형태로 저장

    Vector3 rightPos = new Vector3(0.35f, -0.15f, 0);
    Vector3 rightPosReverse = new Vector3(-0.35f, -0.15f, 0);
    Quaternion leftRot= Quaternion.Euler(0,0,-35);
    Quaternion leftRotReverse = Quaternion.Euler(0, 0, -135);

 

왼손 오른손 오브젝트에 스크립트 추가하고 변수 초기화(직접 SpriteRender를 눌러서 드래그드랍)

 

좌우 바뀔때 반전해주는 함수 작성

    private void LateUpdate()
    {
        bool isReverse = player.flipX;

        if (isleft) //근접무기
        {
            transform.localRotation = isReverse ? leftRotReverse : leftRot;
            spriter.flipY=isReverse;
            spriter.sortingOrder = isReverse ? 4 : 6;
        }
        else    //원거리 무기
        {
            transform.localPosition = isReverse ? rightPosReverse : rightPos;
            spriter.flipX = isReverse;
            spriter.sortingOrder = isReverse ? 6 : 4;
        }
    }

플레이어의 반전 상태를 지역변수로 저장

왼손 회전에는 localRotaion 사용

오른손 이동에는 localPosition 사용

왼손 스프라이트는 Y축 반전

왼손 스프라이트는 X축 반전

왼손, 오른손의 sortingOrder를 바꿔주기


3. 데이터 추가

손 오브젝트에 연결되어 있는 스프라이트 삭제

손 오브젝트 비활성화

ItemData.cs에 스크립트블 오브젝트 코드에서 손 스프라이트를 담을 속성 추가

    [Header("# Weapon")]
    public GameObject projectile;
    public Sprite hand;

Item 0과 Item 1 Hand에 weapon 0, 3 삽입


4. 데이터 연동

Player.cs 안에 핸드 구현

    public Hand[] hands;

    void Awake()
    {
        hands = GetComponentsInChildren<Hand>(true);
    }

- 플레이어에서 손 스크립트를 담을 배열변수 선언 및 초기화

- 이떄 Hand Right,Left는 비활성화 되어 있어서, 적용하기 위해 인자값 으로 true를 넣어줘야 한다.


Weapon 스크립트의 초기화 함수에서 로직 작성

    public void Init(ItemData data)
    {
        //...
        //Hand Set
        Hand hand = player.hands[(int)data.itemType];
        hand.spriter.sprite = data.hand;
        hand.gameObject.SetActive(true);

        player.BroadcastMessage("ApplyGear",SendMessageOptions.DontRequireReceiver);
    }

- player.hands[] 어떤 인자로 줄지 어렵다.

- enum 열거형 데이터는 정수 형태로도 사용 가능하여 (int)data.itemType 사용

- enum 값 앞에 int 타입을 작성하여 강제 형변환

- 근거리는 0, 원거리는 1이기 때문이다.

- 스크립트블 오브젝트의 데이터로 스프라이트 적용

- SetActive 함수로 활성화


깃허브 올리기

Commit : ver 1.11+
Description : Player Weapon Spriter+

 

https://github.com/mekain80/CloneCode_Undead_Survivor

 

GitHub - mekain80/CloneCode_Undead_Survivor: https://www.youtube.com/watch?v=MmW166cHj54&list=PLO-mt5Iu5TeZF8xMHqtT_DhAPKmjF6i3x

https://www.youtube.com/watch?v=MmW166cHj54&list=PLO-mt5Iu5TeZF8xMHqtT_DhAPKmjF6i3x&index=1 - GitHub - mekain80/CloneCode_Undead_Survivor: https://www.youtube.com/watch?v=MmW166cHj54&li...

github.com

 

'게임개발 > 언데드서바이벌_골드메탈_클론코딩' 카테고리의 다른 글

[클론코딩_유니티_골드메탈] 뱀서라이크 따라만들기 13 (게임 시작과 종료)  (0) 2023.05.11
[클론코딩_유니티_골드메탈] 뱀서라이크 따라만들기 12 (레벨업🥳시스템)  (0) 2023.05.10
[클론코딩_유니티_골드메탈] 뱀서라이크 따라만들기 11 (능력 업그레이드💪구현)  (0) 2023.05.10
[클론코딩_유니티_골드메탈] 뱀서라이크 따라만들기 10 (HUD📐제작하기)  (0) 2023.05.06
[클론코딩_유니티_골드메탈] 뱀서라이크 따라만들기 9 (타격감🌟있는 몬스터 처치 만들기)  (0) 2023.05.06
'게임개발/언데드서바이벌_골드메탈_클론코딩' 카테고리의 다른 글
  • [클론코딩_유니티_골드메탈] 뱀서라이크 따라만들기 13 (게임 시작과 종료)
  • [클론코딩_유니티_골드메탈] 뱀서라이크 따라만들기 12 (레벨업🥳시스템)
  • [클론코딩_유니티_골드메탈] 뱀서라이크 따라만들기 11 (능력 업그레이드💪구현)
  • [클론코딩_유니티_골드메탈] 뱀서라이크 따라만들기 10 (HUD📐제작하기)
메카인
메카인
  • 메카인
    메카인의 지식창고
    메카인
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 코딩 공부
        • TIL(Today I Learn)
        • TIL
        • 백준(C++)
        • Python
        • 알고리즘
        • 프로젝트 회고
      • C++
        • C++
        • C++ STL
        • C,C++ mCoding yotube
      • 게임개발
        • 언데드서바이벌_골드메탈_클론코딩
        • 3D_골드메탈_클론코딩
        • 유니티_문제해결
        • 게임 수학
      • Unreal 공부
        • UE5 GameDev
        • Unreal Engine 4 C++ The Ult..
      • 교재 문제 풀이
        • 운영체제
      • 정보처리기사
        • 정처기 요약
        • 정처기 오답노트
      • 학교수업
        • 데이터베이스
        • 프로그래밍 언어론
        • 리눅스 시스템
        • 네트워크
      • 일상
        • 주식
        • 독서
      • (비공개 전용)
        • memory
        • Build
        • OOP
        • Smart Pointer
        • lamda
        • 게임 수학
        • 모던 C++
        • 모던 C++ STL
        • 모던 C++ Concurrency, Paralle..
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 글쓰기
    • 블로그 관리
  • 링크

  • 공지사항

    • 공지사항 - 인생과 블로그의 목표
  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
메카인
[클론코딩_유니티_골드메탈] 뱀서라이크 따라만들기 11+ (플레이어 무기 장착 표현하기)
상단으로

티스토리툴바