Cube 오브젝트 생성 (벽으로 사용, 이름 Wall로 변경)
Scale X(5) Y(1) Z(0)
Gizmos -> Y축 정렬
평행이동 툴을 선택한 후 Windows(Ctrl) / Mac(Command)를 누른 채 마우스로 드래그하여 Wall의 좌표를 옮기면 1씩 좌표 값이 옮겨 짐
Position X(-2.5) Y(0) Z(4.5)로 이동 후 이름 "HorizontalWall"로 변경
"HorizontalWall" 오브젝트 복사하여 "VerticallWall" 생성
위 방법 반복하여 레벨 디자인 배치 완성하기
여러개의 "Wall" 오브젝트로 번잡해진 Hirarchy 창을 정리하기 위해 하나의 게임 오브젝트로 묶어주기
Hierarchy > Create > Create Empty(빈 게임 오브젝트 생성) > "Level"
Position X(0) Y(0) Z(0)
Wall 오브젝트들 Shift키 누른 상태로 멀티클릭하여 Level 오브젝트 하위(자식)로 옮기기
Play 버튼으로 생성한 Level(Map) 오브젝트 테스트하기
Player를 조작(wasd)하여 계획대로 벽을 못 뚫고 지나가는지 테스트
Wall(Cube) 오브젝트에는 이미 Collider 기능을 갖고 있어 물체의 물리적인 표면을 만들어줘서 물체가 뚫고 지나가지 못함
Cube 오브젝트 생성 > 이름 변경 "ItemBox"
Transform > Reset
사이즈 및 좌표 설정
Position X(-1.5) Y(0) Z(-1.5)
Scale X(0.9) Y(0.9) Z(0.9)
색상 넣기
Assets > Create > Material > 이름 변경 "ItemBox"
Albedo > 색상 선택 (주황색)
Smmothness > 0 (값이 크면 반들반들해져보임)
생성한 Material Drag&Drop으로 ItemBox에 적용
물리능력 적용
Add COmponent > Physics > Rigidbody (물리기능 추가)
아이템박스가 밀릴 때 회전하지 않게 하기
Rigidbody > Constraints
Freeze Position : Y축 선택(Y축 잠금)
Freeze Rotation : XYZ축 선택(회전 못하도록 잠금)
Player 오브젝트도 'Freeze Position - Y축 잠금' 설정
Prefab으로 아이템 박스 오브젝트 복사하기
ItemBox 오브젝트를 Drag&Drop으로 Assets에 옮김
Assets에 생성된 Prefab을 Hierarchy 창에 Drag&Drop으로 옮김
총 3개의 아이템 박스 오브젝트를 만듬(기존1 Prefab으로 2개 생성)
EndPoint가 회전하도록 만들기 (60도씩)
Assets > Create > C# Script > Rotator
// Update는 대략 1초에 60번 실행
void Update()
{
// 소문자 'transform'은 오브젝트 자기 자신의 'Transform' 컴포넌트를 참조함
// XYZ축 60도 회전
// Time.deltaTime 은 화면이 한번 깜빡이는 시간 (한 프레임의 시간)
// 화면을 60번 깜빡이면 (초당 60프레임) 1/60
// 60/60 * 60 = 1초에 60도 회전
transform.Rotate(60 * Time.deltaTime,60 * Time.deltaTime ,60 * Time.deltaTime);
}
모든 게임 오브젝트는 Transform 컴포넌트를 가지고 있음
자기 자신의 Transform을 스크립트에서 사용하고 싶으면 transform(소문자)으로 참조하여 사용할 수 있음
Time.deltaTime : 시간 간격이 들어옴