Unity 내일배움캠프 TIL 0915 | Unity Education Day | 싱글턴 | Quaternion

cheeseonrose·2023년 9월 15일
0

Unity 내일배움캠프

목록 보기
35/89
post-thumbnail

오늘은 강의 듣거나 유니티 education day 세션 듣거나 하는 날~

틀어놓고 텅 빈 동공으로 보고 있었는데 ChatGPT와 게임 개발 세션 진행하시는 분이 유니티 코리아의 핵인싸 골드메탈 님이시란다

에?
형이 왜 거기서 나와..? ❀

Unity Education Day - ChatGPT와 Unity 게임 개발

프롬프트(Prompt)

  • 텍스트 기반 지침
  • 최대한 사용자가 의도한 대로 AI의 결과물이 나올 수 있도록 명령하는 것이 중요
  • 사용자가 알고 있는 지식을 기반으로 ChatGPT에 의견을 제시

ChatGPT 노동시키기

  • 게임 기획, 이미지, 스프라이트 목록 등등 물어보면 다 준다 골라골라
  • 에디터랑 템플릿도 추천해줌
  • 아무튼 물어보면 다 알려준다
  • 절차적 대화 진행
    1. 사용자의 현재 상태를 인지시켜주기
      ex: 애니메이션까지 준비 되었습니다.
    2. ChatGPT가 언급한 대상을 다시 상기시키고, 이와 관련된 다음 해야 할 일을 제시하기
      ex: 주인공 '점프' 오브젝트를 물리적으로 움직일 수 있는 간단한 테스트 장면을 만들려고 합니다
    3. 서술식과 나열식 중 작업하기 좋은 나열식 문장 선택
      ex: 제가 해야 할 작업을 "나열"해주세요
  • 기존 답변 수정
    • 이전 대화 혹은 답변 상태를 먼저 언급하고 추가 내용을 덧붙여 질문
  • 관련 페이지 주소를 추천해달라고 하면 주소도 줌
  • 작성한 코드를 보여주면 분석해서 로직을 정리해준다
  • 레벨 디자인도 해주고 종착점 로직까지 요청 가능

ChatGPT가 노동을 멈춘다면

  • 계속(Continue) 입력하면 끊긴 내용에 이어서 다음 내용을 작성해줌
  • 가끔 반복되는 함수를 생략하는데 생략하지 말고 전체 코드 내놔 라고 하면 줌

스프라이트 에셋 구하기

  • 직접 그리기
  • 유니티 에셋스토어
  • 케니(KENNEY)

사운드 에셋 구하기

  • 유니티 에셋 스토어
  • 잇치 아이오
  • 케니
  • 오픈 게임 아트
  • 프리 사운드



유니티 게임 개발 숙련 - 9강 스텟 만들기

스크립터블 오브젝트 (Scriptable Object)

  • Unity에서 데이터를 저장하고 관리하는 유연한 데이터 컨테이너
  • 게임에서 재사용 가능한 데이터를 설정 및 저장하는 데 사용
  • 코드와 데이터의 분리

Range

  • 인스펙터 창에서 조절 가능하도록 만들 때, 범위 지정을 위해 다음과 같이 선언할 수 있음
[Range(1, 100)] public int maxHealth; 

Serializable

  • [SerializeField]로 선언을 할 때, 타입이 클래스라면 그 클래스 위에도 [Serializable]를 선언해줘야 함
    -> 구조를 모르기 때문에 동기화해주는 것
[SerializeField] private CharacterStats baseStats;
[Serializable]
public class CharacterStats 
{
    public StatsChangeType statsChangeType;
    [Range(1, 100)] public int maxHealth;   // Inspector에서 조절할 수 있게 만들 것임
    [Range(1f, 20f)] public float speed;

    // 공격 데이터
    public AttackSO attackSO;
}



10강 투사체 구현하기

싱글턴 패턴

  • 특정 클래스의 인스턴스가 하나만 존재하도록 보장하는 디자인 패턴
  • 인스턴스에 전역적으로 접근 가능
  • 잘못 사용하면 코드의 결합도를 높이고 테스트와 유지보수가 어려워짐
  • 싱글턴 객체는 프로그램 수명 주기 동안 계속 존재
    -> 메모리 관리에 신경써야 함
  • Awake에서 instance를 설정해주므로, 사용할 때는 Start 이후부터 사용 가능
    private void Awake()
     {
     	instance = this;
     }

Quaternion

  • Quaternion도 행렬, Vector도 행렬이므로 곱하기 가능
    -> 하지만 Vector * Quaternion 은 불가능함
  • 곱하기를 하려면 Quaternion * Vector를 해줘야 함
  • 뒤에서 곱한 Vector를 앞에 있는 Quaternion으로 회전시킨 값의 벡터가 나옴
    -> 벡터를 Quaternion만큼 회전시켜라
  • 곱셈 방법
    1. Vector v를 Quaternion으로 변환
      v = (x, y, z)인 Vector는 (0, x, y, z)라는 Quaternion
    2. 이렇게 변환된 Vector Quaternion을 원래의 Quaternion q와 그 켤레 Quaternion q와의 사이에 두고 곱셈 -> qvq 형태
    3. 그 결과로 나온 Quaternion의 x, y, z 요소는 원래 Vector v가 Quaternion q에 의해 회전한 후의 좌표를 나타냄
      -> Unity에서는 Quaternion과 Vector3의 곱셈을 직접 지원 (내부적으로 1~3의 과정을 거쳐 수행)
  • TODO
    • Quaternion 및 게임 수학 관련 공부
private static Vector2 RotateVector2(Vector2 v, float degree)
{
	return Quaternion.Euler(0, 0, degree) * v;
}



너무 졸려서 공부는 여기까지 .. ㅇㅅㅇ
오늘 공부는 영업 종료다.

끗!

1개의 댓글

comment-user-thumbnail
2023년 9월 22일

Are you considering a career in cloud computing or looking to advance your existing skills in Microsoft Azure administration? The https://www.valid4sure.com/AZ-104-exam-answers.html could be your gateway to success. In this comprehensive guide, we will explore everything you need to know about AZ-104, from its significance to effective preparation strategies and common questions you may encounter.

답글 달기