스카이박스(Skybox)는 3D 씬의 하늘과 배경을 나타내는 컴포넌트이다
씬의 전체 배경을 이미지 또는 텍스처로 쉽게 설정할 수 있다
정육면체 도면이 카메라를 감싼듯한 느낌으로 360도 어딜 보든 다 보인다
씬 창에서 바로 드래그 하거나, Window -> Rendering -> Lighting - >Environment에서 설정 가능


참고: https://chulin28ho.tistory.com/522
Input Manager는 게임에서 사용자 입력을 관리하는 시스템이다
Input Manager 를 살펴보면 Horizontal과 Vertical이 유니티 내에서 수치가 미리 지정이 되어있다
움직임 제어에 대해 사용할 것이니 실제 GetAxis()함수를 사용해보자





P = P0 + vt

앞 시간에서 사용한 Vector3()로 값을 지정한 방식은 Vector3가 구조체이기 때문에
위치값을 변경하려면 transform.position을 사용했어야했다
Vector3가 구조체이기 때문에 Vector3의 값을 직접 수정하려면 transform.position과 같은 참조를 통해 접근하여야 한다는 의미

GetAxis()연속적인 입력값을 처리할때 사용된다
값은 float형식으로 반환되며 -1 ~ 1 사이의 값을 가진다

현재 위치에 입력받아서 호출된 GetAxis가 반환하는 값을 더해주면 된다
GetAxis() GetAxisRaw() 차이점GetAxis : 입력 값이 부드럽게 변화한다. 값이 서서히 증가하고 서서히 감소한다
-> 그래서 묘하게 멈출때 밀리는 현상이 있다 (잔여값이 남아있어서)
GetAxisRaw : 값이 -1, 0, 1로만 반환된다. 부드러운 변화가 아닌 값이 즉각적으로 변한다
FPS (Frames Per Second) : 초당 프레임 수
만약, FPS가 높을수록 객체의 움직임이 빠르고, FPS가 낮을수록 객체의 움직임이 느리다면
게임이 공정하게 진행될 수 없다
-> 이를 위해, 프레임 속도와 관계없이 객체가 일정한 속도로 움직이거나 회전하게 만들어주는 Time.deltaTime
ex) 서로 다른 FPS여도 동일한 속도로 실행된다

Normalize() 벡터의 정규화벡터의 정규화란? 벡터의 크기를 1로 만드는 과정
Vector3.Normalize(); 로 사용
크기를 일정하게 유지하고 싶을때 사용된다
ex) 게임 오브젝트를 키 입력을 받아 이동시키고 싶은데 x축이 1만큼 z축이 1만큼 움직일때, y축의 움직임이 묘하게 조금 더 빠르다 (벡터 정규화를 하지 않았기에 실제 값이 1보다 큰것)
-> 모든 방향의 속도가 일정하지 않다
아래의 그림 '피타고라스의 정리'

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class AirCrapt : MonoBehaviour
{
[SerializeField] Vector3 direction;
[SerializeField] float speed;
void Update()
{
direction.x = Input.GetAxisRaw("Horizontal");
direction.z = Input.GetAxisRaw("Vertical");
// Time.deltaTime
// 마지막 프레임이 완료된 후 경과한 시간입니다.
// 벡터의 정규화
direction.Normalize();
transform.position = transform.position + direction * Time.deltaTime * speed;
}
}
