Unity - 유트브 골드 메탈.기술일지

김도익·2023년 3월 7일
0

Unity

목록 보기
5/23
post-custom-banner

유니티 튜토리얼은 큰 도움이 됩니다.

유니티 C프로그래밍 기초. 한방에 정리하기 [유니티 입문 강좌 B4]

Debug.Log

  • Console.Write, WriteLine과 같이 출력하는 동작을 한다.

Class

  • Unity는 클래스 1개당 파일 1개를 만들어줘야합니다.

  • 그리고 다시 원래 기존 C# script로 와서 인스턴스를 생성하고 사용하면 됩니다.

유니티 게임오브젝트의 흐름 [유니티 입문 강좌 B5]

초기화

Awake()

  • 게임 오브젝트 생성할 때, 최초 실행하는 함수이다.

Start()

  • 업데이트 시작 직전, 최초 실행하는 함수이다.

물리연산

FixedUpdate()

  • 물리 연산을 업데이트 해주는 함수이다.

  • 고정된 실행주기로 CPU를 많이 사용한다.

  • 기본 프레임은 1초에 50회 호출이 된다.
    수업시간에 배운 내용에 따르면 프레임은 수정할 수 있다.

게임 로직

Update()

  • 물리 연산에 관련된 로직을 제외한 나머지 주기적으로 변하는 게임 로직을 업데이트 해주는 함수이다.

  • 환경에 따라 실행 주기가 떨어질 수 있다.

  • 기본 프레임은 60프레임이다.

LateUpdate()

  • 모든 Update 함수가 끝이나면 마지막으로 호출되는 함수이다.

  • 캐릭터를 따라가는 카메라나, 로직에 후처리가 필요한 것들을 담당하는 함수이다.

해체

OnDestroy()

  • 게임 오브젝트가 삭제될 때 사용되는 함수이다.

활성화

OnEnable()

  • 게임 오브젝트가 활성화 되었을 때 사용되는 함수이다.

  • Awake()와 Start() 함수 가운데 만들어준다.

    • Awake와 Start처럼 최초 1회 실행만이 아닌, 켜도 끄고가 가능한 함수이다.

비활성화

OnDisable()

  • 게임 오브젝트가 비활성화 되었을 때 사용되는 함수이다.

  • 모든 업데이트가 끝나고, 비활성화 되거나, 삭제되기 전에 사용되는 함수이다.

  • LateUpdate와 OnDestroy함수 사이에 만들어준다.

키보드 마우스로 이동시켜보자! [유니티 입문 강좌 B6]

입력함수는 총 3가지 행동으로 구분됩니다.

  • 눌렀을 때, 누르고 가만히 있을 때, 눌렀다가 땠을 때

Input

  • 게임 내 입력을 관리하는 클래스

  • Input.anyKeyDown

    • 아무런 키를 한 번 눌렀을 때 한 번 반응한다.
  • Input.anyKey

    • 아무런 키를 누르고 있으면 계속해서 반응한다.
  • GetKey

    • 키보드를 입력 받으면 true
    • 매개변수로 KeyCode를 가지고 있다.
      - KeyCode에서 Enter 대신 Return을 사용해야한다.
      - ESC 대신 Escape를 사용해야한다.
  • GetMouseButton

    • 마우스 버튼을 입력 받으면 true

    • 매개 변수를 숫자로 받는다.

      • 0은 마우스 오른쪽 버튼
        1은 마우스 왼쪽 버튼

  • GetButton

    • Input 버튼 입력을 받으면 true

      • 매개 변수는 string으로 되어있다.

      • Input Manger에 있는 명령어 이름을 인수로 주면된다.


  • GetAxis

    • 수평, 수직 버튼 입력 받으면 float을 반환한다.

    • 중간 값이 있다.

  • GetAxisRaw

    • 수평, 수직 버튼 입력 받으면 왼쪽 -1, 오른쪽 1, 중간점이 되면 0

    • 중간 값이 없다.


오브젝트는 변수 transform을 항상 가지고 있다.

Transform : 오브젝트 형태에 대한 기본 컴포넌트

Unity에서 백터와 스칼라

목표 지점으로 이동시키기 [유니티 입문 강좌 B7]

Vector3에서 제공하는 이동방식

MoveTowards

  • 등속 이동

  • 매개 변수는 (현재 위치, 목표 위치, 속도)

  • 마지막 매개 변수에 비례하여 속도가 증가합니다.

SmoothDamp

  • 도달지점에선 부드럽게 도착하는 함수입니다.

  • 매개 변수는 (현재 위치, 목표위치, 참조 속도, 속도)

  • 마지막 매개변수에 반비례하여 속도가 증가합니다.

Lerp

  • 선형 보간, SmoothDamp보다 감속시간이 깁니다.

  • 매개 변수는 (현재 위치, 목표 위치, 속도)

  • 마지막 매개 변수에 비례하여 속도가 증가합니다.(최대값 1)

SLerp

  • 구면 선형 보간, 호를 그리며 이동

  • 매개 변수는 (현재 위치, 목표 위치, 속도)

이동거리를 공평하게, 델타타임 [유니티 입문 강좌 B8]

Time.deltaTime

  • 중요한 공식입니다.

  • Time.deltaTime값은 프레임이 적으면 크고, 프레임이 크면 작습니다.

    • 이렇게 해줌으로써 성능이 좋지 않은 컴퓨터와 성능이 좋은 컴퓨터에 이동거리를 공평하게 만들어줄 수 있습니다.
  • 이전 프레임의 완료까지 걸린 시간

실제와 같은 물체를 만들기[유니티 입문 강좌B9]

Physic Material

  • Dynamic Friction : 동적 마찰력
    Static Friction : 정적 마찰력

    • 만화 같은 그림을 만들고 싶다면 둘 다 0과 가까운 값으로 주면 물치게 얼음 위를 미끄러지듯 미끄러진다. 또한 Bounciness도 0으로 주면 된다.
  • Friction Combine : 다음 마찰력을 계한하는 방식

    • 최소 값일 수록 스르륵 잘 미끄러지게 구현이 가능하다.
  • Bounciness : 통통 뛰는 것

    • 탁구공, 농구공, 축구공 처럼 통통 튀게 만들어준다.
    • 범위는 0 ~ 1이며, Bounce Combine에서 통통 튀는 정도를 어느정도로 해줄 것인지 설정하면 된다.

Physic Material 생성 방법



힘을 이용하여 물체 움직여보기 [유니티 입문 강좌 B10]

이동은 RigidBody가 자연스럽다.

  • 캐릭터가 점프하는 모션을 그릴 때 자주사용하는 Impuse

회전은 AddTorgue함수를 사용한다.

  • forward, back : z축을 중심으로 회전한다.

  • right, left : x축을 중심으로 회전한다.

  • up, down : y축을 중심으로 회전한다.

물리 충돌 이벤트 [유니티 입문 강좌 B11]

  • 물리 충돌은 OnCollisionEnter, OnCollisionStay, OnCollisionExit

  • 색상

  • trigger은 OnTriggerEnter, OnTriggerStay, OnTriggerExit
    트리거는 물리적인 영향은 받지 않은 채 충돌만 감지한다.


게임 인터페이스를 알아봅시다, UGUI 기초 [유니티 입문 강좌 B12]

Filled기능으로 쿨타임 효과 구현이 가능하다.

  • 해당 이미지를 클릭하고 타입을 바꿔준다.

  • 계층창에 있는 Image에 Image Type을 Filled로 바꿔준다.

  • Cirl D롤 눌러 같은 이미지를 복사한다.
    단, Canvas기준 아래로 갈 수록 가장 나중에 그려진다.

  • 복사한 이미지를 어둡게 만든다.

  • 두 이미지를 겹친다.
    복사한 이미지가 맨 밑에 있으니 가장 나중에 그려지기 때문에 아래와 같은 모습이 된다.

  • 아래 보이는 기능들을 활용해 쿨타임이 돌아가는 것처럼 구현하면 된다.

Button 만들기



)

  • OnClick() 함수

  • On Click()안에 Script가 아닌 gameObject를 넣어줍니다.
    그리고 MyBall Script에 Jump함수를 추가해준다. public으로


  • 점프 클릭할 때 마다 빨간 공이 잘 뛰는 것을 확인할 수 있다.

앵커로 UI맞추기!

  • 아래 그림보다 명확하게 자리를 잡고 싶다면, Shift + Alt키 누르면 명확하게 위치를 조정할 수 있다.

  • 나머지 Position을 잡는다면 아래와 같은 UI를 만드는 것이 가능하다.

내가 직접 만든 UI

기초만 꾹꾹 눌러담은 3D 게임 만들기 [유니티 입문 강좌 BE1]

게임을 만들 때 키보드와 마우스에 먼저 손이 가는 것이 아닌, 게임을 어떻게 만들 것인지 기획이 중요하다.

profile
고급 개발자가 되고 싶어요!
post-custom-banner

0개의 댓글