[1~4주: 구현력 확보] 1주차 - 3일, Weapon 3종 실행 버전 만들기

2025. 12. 13. 22:54·기타/24주 게임 프로그래밍 챌린지

[서론]

AI를 쓰는 방법을 조금은 알 것 같다. 생각하는 과정부터 도울 수 있게끔 부탁을 해야한다.

절 대... 까지는 아니지만, 이제 어느정도 코드 활용이 되므로

활용해야하는 코드(함수)를 주고 스스로 생각할 수 있게끔 도와달라고 하는 게 좋은 것 같다.

[본론]

무기 구현을 위해 너무 많은 역할을 지고 있던 PlayerAttack.cs를 수정하기로 했다.

그 과정에서 생긴 질문들과 다양한 오류를 기록해볼 예정이다.

 

이전까지는 PlayerAttack에 그냥 몰아넣고 일단 구현해보자 라는 느낌으로 갔는데,

새 무기를 넣으려고하니 새 스크립트를 만들어야하는건지, 기존 껄 수정해야하는 건지 헷갈려서 AI에게 질문했더니

그렇다... 일단 분리를 해야한다.

 

" PlayerAttack.cs는 더 이상 특정 무기를 구현하는 스크립트가 아니라, **'어떤 무기를 현재 사용할지 관리하는 매니저'**가 되어야 합니다."

[1번째 질문: enum이란?]

enum은 통역사 역할이다. 컴퓨터는 숫자파이지만 우리는 글자파이기 때문이다.

예를 들어서 나는 뿅망치, 씨앗, 에너지파를 무기로 정해뒀는데

이걸 구현하려고 든다면 각각을 0,1,2 라는 번호로 지정해서 코딩해야할 것이다

그럼 나중에 보면 0은 뭐고 1은 뭔지 가독성이 매우 떨어지게 된다

 

int currentWeapon = 1; // 1이 뭐였지? 씨앗인가? 뿅망치인가?

if (currentWeapon == 0) 
{
    // 뿅망치 로직... (근데 0이 뿅망치 맞나? 기억이 안 나네...)
}
else if (currentWeapon == 1)
{
    // 씨앗 로직...일까?
}

AI의 도움을 받아보자면, enum은 딱 3단계로 정리할 수 있다.

  1. 목록 만들기
  2. 담을 변수 만들기
  3. 비교하기 (switch문이 효과적임)

1. 목록은 다음과 같이 만든다

public enum 목록이름

2. 변수는 다음과 같이 만든다

public 목록이름 변수이름;

3. 비교 (Switch)는 다음과 같이 사용한다

이어서 switch문에 대해 더 설명하겠다.

// Enum과 찰떡궁합! 추천 ⭐)
switch (myWeapon)
{
    case WeaponType.BBOYANGMANGCHI:
        // 뿅망치 코드
        break;
    case WeaponType.SEED:
        // 씨앗 코드
        break;
    case WeaponType.ENERGY:
        // 에너지 코드
        break;
}

[2번째 질문: Switch문의 사용법은?]

여러분들도 이미 아는 내용일 것 같다.

하지만 특징과 사용법을 다시 정리해보자

 

<Switch문의 특징>

  1. 가독성 끝판왕: 조건이 3개 이상일 때 if-else보다 훨씬 코드가 깔끔하고 읽기 쉽습니다.
  2. 딱 떨어지는 값: 범위(> 10)보다는 딱 떨어지는 값(0, 1, "Apple", Enum)을 비교할 때 씁니다.
  3. 점프!: 조건을 하나하나 검사하는 게 아니라, 해당하는 case로 바로 점프해서 실행합니다. (그래서 조건이 많아질수록 if보다 빠를 수 있습니다.)
switch (검사할_변수)
{
    case 값1:
        // 값1일 때 실행할 코드
        break; // "여기서 끝! 나가!" (필수)

    case 값2:
        // 값2일 때 실행할 코드
        break;

    default:
        // 위의 어떤 case도 아닐 때 실행할 코드 (else와 같은 역할)
        break;
}

[3번째 질문: OnTriggerEnter2D의 사용법은?]

비슷한 종류로는 OnCollisionEnter2D가 있겠다, OnCollisionEnter2D은 충돌 감지이지만

OnTriggerEnter2D는 닿았나?를 검사한다

private void OnTriggerEnter2D(Collider2D collision)

주로 Collider2D형의 변수 정보를 받아온다.

이 형태는 공식처럼 정해져 있어서 토씨 하나라도 틀리면 작동하지 않는다...

(물론 collision까지는 other이라고 써도 된다)

[3번째 질문: linearVelocity 란?]

linearVelocity는 선형 속도...라고 불리지만 중요하지는 않으며

물체의 속도를 결정한다. (AddForce와는 다름, 이건 물체에 힘을 주는 거다)

Rigidbody와 함께 사용해야 하며 X축 속도와 Y축 속도를 정해줘야한다

Rigidbody2D rb = GetComponent<Rigidbody2D>();
rb.linearVelocity = new Vector2(x_value, y_value);

 

[후기]

[구현 과정에서의 어려움]

오늘 정말 많은 걸 고쳤는데,

머리 속에 있는 게 정리가 안되어서 코드를 마구 짜게된다. 아무것도 모르는 상태에서도 더러운 코드라는 걸 알 수 있었다!

과정을 잘 정리하는 게 중요할 것 같다...

기획이 중요하다는 말을 다시금 상기하게 된다

많은 걸 했어도 많은 말을 담지 못했지만, 아는 만큼 쓸 수 있도록 더욱 노력하겠다.

'기타 > 24주 게임 프로그래밍 챌린지' 카테고리의 다른 글

[1~4주: 구현력 확보] 1주차 - 4일, 스테이지 흐름 기본 구축  (0) 2025.12.14
[1~4주: 구현력 확보] 1주차 - 2일, Player Combat 안정화  (0) 2025.12.11
[1~4주: 구현력 확보] 1주차 - 1일, Enemy 마무리  (0) 2025.12.09
🚀 24주 기술 성장 로드맵  (0) 2025.12.09
'기타/24주 게임 프로그래밍 챌린지' 카테고리의 다른 글
  • [1~4주: 구현력 확보] 1주차 - 4일, 스테이지 흐름 기본 구축
  • [1~4주: 구현력 확보] 1주차 - 2일, Player Combat 안정화
  • [1~4주: 구현력 확보] 1주차 - 1일, Enemy 마무리
  • 🚀 24주 기술 성장 로드맵
피까츄
피까츄
프로그래밍 마스터가 될테야
  • 피까츄
    프로그래밍 마스터
    피까츄
  • 전체
    오늘
    어제
    • 분류 전체보기 (87)
      • 컴퓨터가 이상해요 모음집 (5)
      • 프로그래밍 (0)
      • 회고 (1)
      • 1학년 (21)
        • 명품 HTML+CSS+JS (10)
        • 쉽게 배우는 C언어 Express (2)
        • R언어 (9)
      • 2학년 (3)
        • C언어로 쉽게 풀어쓴 자료구조 (1)
        • 프로그래밍 언어론 (2)
      • 개인공부 (25)
        • 백준 (17)
        • 코드트리 JS (7)
        • 코테 공부 (1)
      • 챌린지 (1)
        • Do it C++ 코테 6주 챌린지 (1)
      • 교재 (14)
        • 이것이 C++이다 (3)
        • 이것이 JAVA다 (0)
        • 혼자 공부하는 컴퓨터구조 + 운영체제 (1)
        • 혼자 공부하는 데이터통신 (0)
        • 코어 자바스크립트 (8)
        • OpenGL로 배우는 3차원 컴퓨터 그래픽스 (2)
      • 유데미 (11)
        • 100일 코딩 챌린지 (3)
        • C# Unity 2D (8)
      • 기타 (0)
        • 24주 게임 프로그래밍 챌린지 (5)
  • 블로그 메뉴

    • 방명록
    • 그림블로그
    • 3D 블로그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    복습
    윈도우 기능 켜기
    HTML5+CSS3+Javascript 웹 프로그래밍 #연습문제 #이론문제 #실습문제 #풀이 #정답
    0x80370102오류코드
    작업표시줄클릭안됨
    vscode자동완성
    우분투C
    가상현실 설정
    프로그래밍언어론
    우분투java
    the package javax.swing is not accessible
    js #자바스크립트_기초
    우분투 설치 오류
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
피까츄
[1~4주: 구현력 확보] 1주차 - 3일, Weapon 3종 실행 버전 만들기
상단으로

티스토리툴바