[멋쟁이사자처럼 부트캠프 TIL회고] Untiy 게임개발 3기 7일차
우선 주말에 궁금했던 부분을 설명해 주셔서 그것부터 !
즉, "클래스 타입의 변수, 변수이름은 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값으로 바꿔주어야함.