모각코 [3주차]

Haphael·2023년 1월 22일
0

레벨 디자인 (맵 디자인)

맵 디자인하기

  • 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개 생성)

골인 지점 만들기

  • Cube 오브젝트 생성 > 이름 변경 "EndPoint"
  • 사이즈 및 좌표 설정
    Position > X(2.5) Y(0) Z(3.5)
    Rotation > X(60) Y(60) Z(60)
    Scale > X(0.5) Y(0.5) Z(0.5)
  • 색상 넣기
    Assets > Create > Material > 이름 변경 "EndPoint"
    Drag&Drop으로 EndPoint 오브젝트에 적용
  • Prefab으로 골인 지점(EndPoint) 오브젝트 복사하기
    총 3개의 골인 지점 오브젝트를 만듬(기존1 Prefab으로 2개 생성)
  • Player가 통과 가능하도록 설정
    EndPoint 오브젝트 > Box Collider > Is Trigger > 체크 > Apply (Prefab으로 생성한 다른 골인 지점 오브젝트들도 변경사항 함께 적용 됨)

Player 색상 적용하기

  • Assets > Create > Material > "Player" > 색상 설정 / Smoothness 0 > 오브젝트에 적용

Main Camera

  • Claer Flags - 아무것도 비추어지지 않는 영역을 어떻게 표현할 것인가
    Solid Color > Brackground > 색상 지정

오브젝트 회전 + 시간 간격

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 : 시간 간격이 들어옴

0개의 댓글