TIL

[멋쟁이사자처럼 부트캠프 TIL회고] Untiy 게임개발 3기 7일차

Cadi 2024. 11. 26. 13:01

   우선 주말에 궁금했던 부분을 설명해 주셔서 그것부터 ! 

즉, "클래스 타입의 변수, 변수이름은 person1에 새로운 person이라는 클래스를 대입한다" 로 볼 수 있다. 

 

* 기능을 모듈화(캡슐화) 해서 다른 게임에서도 적용할 수 있다.

* 접근제한자가 Public이더라도 함수는 사용만 가능하다. ( 변수는 수정 사용이 둘 다 가능하다 )

* Script A , Script B, Example Class라는 세 가지의 Class가 있을 때  Example Class 안에 

Public SciptA scriptB

라는 문자열이 있으면, 접근이 가능한 ScriptA클래스의 타입인 변수명인 scriptB를 만들었다고 볼 수있다. 여기서는 복사해서 가져오는것 이라고 이해하면 된다. ( 복사해서 가져오는 것)


Component : 게임 오브젝트의 부품/기능

유니티에서 제공하는 것들도 있고, Script를 붙여서 기능을 추가할 수도 있음

 

Component ( 유니티 제공 ) 종류 :

1. 트랜스폼(Transform)

2. Mesh Filter

3. Mesh Renderer

등이 있음(앞으로 추가될 예정)

 

*유니티는 OOP라 모두 Transform을 갖고 있음(Scene에 존재하기 위해서), 그래서 transform은 코드에서 Getcomponent를 할 필요가 없음 // 서로 변용하며 코드에서 사용할 수 있지만, gameobject.postion은 안됨.



 

 

 

코드에서 AddComponent로 Component 추가를, GetComponent에 접근해서 활용할 수 있음.

AddComponent의 예시

GetComponent의 예시


이동관련

다양한 이동이 있음. ( 자세히 설명 x, 개인적으로 차이점 찾아보기 )

* 만일 transform을 이동시키는 방식으로 코드를 작성한다면, 순간이동식 이동이라 속도가 빠르면 물체를 뚫고 지나가기도 함( 내일 Rigidbody에서 비교해볼 예정)


Frame과 DeltaTime

Frame : 한 장의 화면을 렌더링한 것 

FPS    : Frame per second, 초당 프레임 실행 횟수

DetalTime : 프레임이 바뀔 때마다 시간을 측정한 값

Ex) 100 FPS가 같은 속도로 진행되었다면 deltaTime==0.01

       50  FPS가 같은 속도로 진행되었다면 deltaTime==0.02

즉 FPS와 deltaTime은 반비례 관계를 갖고, 이를 이용해 속도를 일정하게 맞춰줄 수 있음.

 

 

저번에 이동할때 썼던 코드

*start 함수에 쓰면 실행이 안됨, 한 번만 실행이기 때문

 

이렇게 W,A,S,D를 모두 쓰면 길어지기도 하고 자주 쓰는 기능이기도 하니 유니티에서 만들어준 것이 있음.

InputManger : wasd, 화살표, 공격이나 발사(fire), spacebar 등 

GetAxis("Horizontal") : 키보드 A ,D, 왼쪽 오른쪽 화살표

GetAxis("Vertical")     : 키보드 W,S, 위쪽 아래쪽 화살표

이렇게 GetAxis(GetAxisRaw)를 사용해 값을 설정할 수 있다. 

GetAxis는 -1부터 1까지의 값을 민감도 설정에 기반해 리턴하기때문에 가속도 붙는 것처럼 부드러운 이동이 가능하다.

GetAxisRaw는 정확한 -1,0,1 값을 즉시 리턴하기 때문에 약간은 경직된 모습이다.

두 가지는 게임에 따라 다르게 사용됨. 

 

* 마우스는 좌클릭이 0, 우클릭이 1 휠이 2

**이동할때  normalized를 하지 않는다면 대각선 이동시 이동속도가 빨라질 수 있음.

정상화를 통해 0~1값으로 바꿔주어야함.