Retro 유니티 서적을 공부하면서 정리하는 TIL 입니다.

1 유닛 = Cube 한변의 길이
1 유닛을 현실에 몇 미터에 대응할지는 개발자 의 몫,
보통 1유닛 = 1 meter
게임 오브젝트의 컬러를 결정
셰이더 + 텍스쳐 = 머터리얼
셰이더 : 주어진 입력에 따른 픽셀의 최종 컬러를 결정하는 코드
텍스쳐 : 표면에 입히는 이미지 파일
기본값으로 배경을 SkyBox로 채우도록 설정
만약 플레이어와 탄알이 충돌시, 탄알이 플레이어인지 확인할때 사용하는 방법이 바로 태그

추후에 탄알이 어떤 게임 오브젝트와 충돌했는지 확인시, Tag의 Player를 보고 추후 이벤트로 연결 가능(게임오버, 체력감소 등등)

Constraints 옵션 사용을 통해서 힘(이동),충돌 등 물리작용에 의해
위치나 회전이 변경되는 것을 방지할 수 있음.
Freeze Postion에 Y축 체크 -> y축(높이) 값 고정
Freeze Rotaion에 X,Z축 체크 -> 회전은 좌우, 상하만 가능
private Rigidbody playerRigidBody;
RigidBody 오브젝트를 생성할 수는 없지만, Player의 RigidBody 오브젝트를 가리킬 수 는 있음
게임은 실시간으로 사용자와 상호작용이 필요,
따라서 주기적인 갱신 체크가 필요함.
update 메소드는 한프레임에 한번, 매프레임마다 반복 실행
만약 이 메소드안에 Input 클래스를 활용한다면, 입력감지를 겁나게 자주하기때문에
사용자는 실시간인 것 처럼 느낌
if(Input.GetKey(KeyCode.UpArrow) == true) {
// 위쪽 방향키, z 방향 힘
playerRigidBody.AddForce(0f, 0f,speed);
}
if(Input.GetKey(KeyCode.DownArrow) == true) {
playerRigidBody.AddForce(0f, 0f,-speed);
}
if(Input.GetKey(KeyCode.RightArrow) == true) {
// 오른쪽 방향키, x 방향 힘
playerRigidBody.AddForce(speed, 0f, 0f);
}
if(Input.GetKey(KeyCode.LeftArrow) == true) {
playerRigidBody.AddForce(-speed, 0f, 0f);
}
해당 키를 누르면 True, 해당 키를 누르고 있지 않다면 False.
public void Die()
{
gameObject.SetActive(false);
}
컴포넌트 입장에서 자신이 추가된 게임 오브젝트를 가리키는 변수
MonoBehavior 에서 제공됨.
모든 컴포넌트는 이 gameObject 변수를 통해 자신을 사용중인 게임 오브젝트에 접근이 가능해진다.
이를 Player 오브젝트에 추가하므로, gameObject => player
모든 게임 오브젝트는 스스로 켜고, 끄기 가능(활성화/비활성화)
불린 값으로 조절 가능

태그 옆 체크표시가 바로 SetActive()
원하는 타입의 컴포넌트를 자신의 게임오브젝트에서 찾아옴
void Start()
{
playerRigidBody = GetComponent<Rigidbody>();
}
Rigidbody타입의 오브젝트를 찾는 코드
GetKey를 GetAxis로 개선
어떤 축에 대한 입력값을 숫자로 변환하는 메서드
void Update()
{
float xInput = Input.GetAxis("Horizontal");
float zInput = Input.GetAxis("Vertical");
float xSpeed = xInput * speed;
float zSpeed = zInput * speed;
Vector3 newVelocity = new Vector3(xSpeed, 0f, zSpeed);
playerRigidBody.velocity = newVelocity;
}
축의 이름을 받고, 예를 들어
float xInput = Input.GetAxis("Horizontal");의 경우
원소 x,y,z 를 가지는 타입
보통 게임 조작키 설정은 기능과 매핑된 키 쌍으로 구성
ex. 패스 - S
그렇다면 이를 변경시 GetKey라면 직접 해당된 키를 코드상에서 바꾸어 주어야함.
GetAxis를 통해
코드(실제 패스 기능) - 입력 이름(패스) - 입력 장치(키보드)
식으로 축을 사용하여 입력키를 직접 명시하지 않아도 됨.
축은 유니티의 입력매니저에서 관리
Edit > ProjectSettings 에 있음

하단에 조이스틱 Axis가 있는 이유는
키보드는 누름, 안누름을 1, 0으로 딱 떨어지지만
패드 조이스틱같은 경우 세게 밀 경우와 살살 밀 경우가 있기 때문