[클론코딩_유니티_골드메탈] 뱀서라이크 따라만들기 14 (플레이 캐릭터🧑‍🤝‍🧑선택 )

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

https://www.youtube.com/watch?v=vJACbWBDa90&list=PLO-mt5Iu5TeZF8xMHqtT_DhAPKmjF6i3x&index=18 


1. 캐릭터 선택 UI

UI의 새로운 빈 오브젝트를 생성

- Canvas > GameStart > 우클릭 > Creat Empty (Character Group)

+세부 조정

Grid Layout Goup : 자식 오브젝트를 그리드 형태로 정렬하는 컴포넌트

- Cell Size 50 50 , Spacing 1 1

시작 버튼을 자식 오브젝트로 넣기(이름 변경 Character 0)

버튼에 Image 추가

Image 0 할당(y8)

캐릭터 선택 버튼으로 편집(Text Name etc)

버튼과 Text의 Outline의 색을 변경

완성한 버튼을 Ctrl + D로 복사하여 다른 캐릭터로 편집


2. 선택 적용하기

GameManager.cs 에서 캐릭터 ID를 저장할 변수 선언

    [Header("# Player Info")]
    public int playerId;
    
        public void GameStart(int id)
    {
        playerId = id;
        maxHealth = 100;
        health = maxHealth;

        uiLevelUp.Select(playerId % 2);    //임시 스크립트 (첫번째 캐릭터 선택)

        Resume();
    }

- 게임 시작 함수에는 int 매개변수 추가

- 기본무기 지급(임시 스크립트)을 위한 함수 호출에서 인자 값을 캐릭터ID로 변경

 

플레이어 오브젝트는 미리 비활성화

 

게임 시작할 때 플레이어 활성화 후 기본 무기 지금

    public void GameStart(int id)
    {
        playerId = id;
        maxHealth = 100;
        health = maxHealth;

        player.gameObject.SetActive(true);
        uiLevelUp.Select(playerId % 2);    //임시 스크립트 (첫번째 캐릭터 선택)

        Resume();
    }

- % 2 : 에러 발생 방지용

 

https://www.youtube.com/watch?v=vizfd1TeRMI 

 

플레이어 스크립트에 여러 애니메이터 컨트롤러를 저장할 배열 변수 선언

public RuntimeAnimatorController[] animCon;

 

일단 두개로 진행

 

Player.cs OnEnable 함수 추가 후, 애니메이터 변경 로직 추가

    private void OnEnable()
    {
        anim.runtimeAnimatorController = animCon[GameManager.instance.playerId];
    }

 

GameManager 캐릭터 선택 버튼의 게임시작 함수를 재연결

0은 0으로 1은 1으로


3. 캐릭터 특성 로직

캐릭터 특성을 관리하는 새로운 스크립트 생성(Character)

public class Character : MonoBehaviour
{
    public static float Speed
    {
        get { return GameManager.instance.playerId == 0 ? 1.1f : 1f; }
    }

- 함수가 아닌 속성을 작성

- 삼항연산자를 활용하여 캐릭터에 따라 특성치 적용

 

Player.cs

    private void OnEnable()
    {
        speed *= Character.Speed;
        anim.runtimeAnimatorController = animCon[GameManager.instance.playerId];
    }

- 스피드 곱연산

- 평소 많이 활용한 클래스들의 속성들도 이런 방식으로 작성되어 있어요

 

Gear.cs

    void SpeedUp()
    {
        float speed = 3 * Character.Speed;
        GameManager.instance.player.speed = speed + speed * rate;
    }

- 스피드 곱연산

 

Character.cs 캐릭터 특성치에 맞는 각종 속성들을 작성

public class Character : MonoBehaviour
{
    public static float Speed
    {
        get { return GameManager.instance.playerId == 0 ? 1.1f : 1f; }
    }
    public static float WeaponSpeed
    {
        get { return GameManager.instance.playerId == 1 ? 1.1f : 1f; }
    }
    public static float WeaponRate
    {
        get { return GameManager.instance.playerId == 1 ? 0.9f : 1f; }
    }
    public static float Damage
    {
        get { return GameManager.instance.playerId == 2 ? 1.2f : 1f; }
    }
    public static int Count
    {
        get { return GameManager.instance.playerId == 3 ? 1 : 0; }
    }

}

 

나머지 연사속도 적용

Weapon.cs

    public void Init(ItemData data)
    {
        //...
        switch (id)
        {
            case 0:
                speed = 150 * Character.WeaponSpeed;
                Batch();
                break;
            default:
                speed = 0.3f * Character.WeaponRate;
                break;
        }

Gear.cs

    void RateUp()
    {
        Weapon[] weapons = transform.parent.GetComponentsInChildren<Weapon>();

        foreach(Weapon weapon in weapons)
        {
            switch (weapon.id)
            {
                case 0:
                    float speed = 150 * Character.WeaponSpeed;
                    weapon.speed = 150 + (150 * rate);
                    break;
                default:
                    speed = 0.5f * Character.WeaponRate;
                    weapon.speed = 0.5f * (1f - rate);
                    break;
            }
        }
    }

 

데미지 상승, 갯수 증가

Weapon.cs

    public void Init(ItemData data)
    {
        // ...


        // Property Set
        id=data.itemId;
        damage = data.baseDamage * Character.Damage;
        count = data.baseCount + Character.Count;
    }
    
    public void LevelUp(float damage, int count)
    {
        this.damage = damage * Character.Damage;
        this.count += count;
        //...
    }

깃허브 올리기

Commit : ver 1.13
Description : Play Character Select

 

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

 

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

[클론코딩_유니티_골드메탈] 뱀서라이크 따라만들기 15 (편리한 오디오🔊시스템 구축)  (0) 2023.05.25
[클론코딩_유니티_골드메탈] 뱀서라이크 따라만들기 14+ (캐릭터 해금🔓시스템)  (0) 2023.05.25
[클론코딩_유니티_골드메탈] 뱀서라이크 따라만들기 13 (게임 시작과 종료)  (0) 2023.05.11
[클론코딩_유니티_골드메탈] 뱀서라이크 따라만들기 12 (레벨업🥳시스템)  (0) 2023.05.10
[클론코딩_유니티_골드메탈] 뱀서라이크 따라만들기 11+ (플레이어 무기 장착 표현하기)  (0) 2023.05.10
'게임개발/언데드서바이벌_골드메탈_클론코딩' 카테고리의 다른 글
  • [클론코딩_유니티_골드메탈] 뱀서라이크 따라만들기 15 (편리한 오디오🔊시스템 구축)
  • [클론코딩_유니티_골드메탈] 뱀서라이크 따라만들기 14+ (캐릭터 해금🔓시스템)
  • [클론코딩_유니티_골드메탈] 뱀서라이크 따라만들기 13 (게임 시작과 종료)
  • [클론코딩_유니티_골드메탈] 뱀서라이크 따라만들기 12 (레벨업🥳시스템)
메카인
메카인
  • 메카인
    메카인의 지식창고
    메카인
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 코딩 공부
        • 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
메카인
[클론코딩_유니티_골드메탈] 뱀서라이크 따라만들기 14 (플레이 캐릭터🧑‍🤝‍🧑선택 )
상단으로

티스토리툴바