C#

C# - Unity 1인칭 게임 구현 [Part. 1]

마루설아 2024. 12. 12. 19:52

* Do It! C# 프로그래밍 입문 도서를 참조하여 진행합니다.

 

 

상단 메뉴의 GameObject - 3D Object - Plane, Capsule을 생성해준다.

 

 

두 오브젝트가 겹쳐보이므로, 캡슐을 선택한 다음 Position의 Y축을 1로 설정해준다.

 

 

하이어키에서 Capsule을 클릭하고 상단 메뉴의 Component - Physics - Character Controller를 등록해준다.

 

 

프로젝트의 Assets 우클릭 - Create - Scripting - MonoBehaviour Script로 스크립트를 생성하고

파일명을 CharacterMove로 변경한다.

 

CharacterMove를 더블클릭해서 열고 아래와 같이 코딩해준다.

using NUnit.Framework.Constraints;
using UnityEngine;

public class CharacterMove : MonoBehaviour
{
     // 움직이는 속도 제어
     public float speed = 10.0F;

     // 점프 높이 설정
     public float jumpSpeed = 8.0F;

     // 점프 후 바닥에 떨어지는 속도
     public float gravity = 20.0F;

     // 움직이는 방향 Vector3.zero = (0,0,0)
     private Vector3 moveDirection = Vector3.zero;

    void Update()
    {
          // 인스펙터 뷰에서 변경할 수 있는 컨트롤러를 C#으로 가져옴
          CharacterController controller = GetComponent<CharacterController>();

          // 땅에 붙어있는지 확인
          if (controller.isGrounded)
          {
               // 키보드의 좌우 방향키
               float x = Input.GetAxis("Horizontal");

               // 키보드의 상하 방향키
               float z = Input.GetAxis("Vertical");

               // 키보드 방향키 입력을 Vector3으로 저장
               moveDirection = new Vector3(x, 0, z);

               // 좌표를 공간 월드 좌표로 변환
               moveDirection = transform.TransformDirection(moveDirection);

               // 움직임 속도 조정
               moveDirection *= speed;

               // 점프 버튼을 누르면 점프 (유니티 Edit - Project Settings - Input Manager에서 Axes - Jump - Positive Button에 스페이스바 버튼 입력)
               if (Input.GetButton("Jump"))
                    moveDirection.y = jumpSpeed;
          }
          
          // 착지하기
          moveDirection.y -= gravity * Time.deltaTime;

          // 캐릭터 이동하기
          controller.Move(moveDirection * Time.deltaTime);
    }
}

 

 

유니티의 상단 메뉴에서 Edit - Project Settings

설정 창이 나오면 Input Manager -  Axes - Jump - Positive Button에 스페이스바 버튼 입력

 

 

생성한 스크립트를 캡슐 오브젝트에 추가해준다.

 

 

상단의 재생버튼을 눌러 테스트해본다.