내일배움캠프 1일차

박나연·2025년 4월 7일

내배캠

목록 보기
1/69

유니티 재활 시작

유니티와 잠깐 권태기를 가지고... 다시 친해져보기로 한 1일차

오늘의 키워드 : 기초다지기

1. Inputsystem

서론 : 유니티가 6버전이 나오면서 newinputsystem이었던 것이 기존 inputsystem이 되었다. 원래는 하나하나 지정해줘야 했던 것들이 이미 설정이 되어 있어 편하게 쓸 수 있다. 단점이 있다면 inputsystem을 사용하는 방법을 또 새로 익혀야 한다는 점? 예전에 썼다가 기억이 안나서 다시 하는데 애를 먹었다. 그럼 설명 시작!!

먼저 빈 오브젝트를 만들고 PlayerInput을 추가해준다. <필수임
그리고 Inputsystem을 다룰 스크립트하나도 같이 넣어주자. Generate C# Class도 체크하는 것 잊지말기!

(나는 오늘 WASD와 G키 상호작용만 구현했기 때문에 그에대한 것만 다룬다.)

-> move

	public void OnMove(InputValue value)
    {
        moveInput = value.Get<Vector2>();
    }

중요한건 이 코드다. 이 코드는 InputSystem의 Move 액션이 호출될 때 자동으로 실행된다. 사용자가 WASD혹은 방향키를 입력하면 해당 방향이 Vector2로 전달된다.

     Vector3 move = new Vector3(moveInput.x, 0, moveInput.y);
     playerTarget.transform.Translate(move * moveSpeed * Time.deltaTime, Space.World);

입력된 방향과 속도에 따라 플레이어를 움직인다. Y축은 고정, z와 x축 평면으로만 이동한다.

-> interact

나는 한 번 짧게 누를 때 상호작용이 되길 원했다.

Action Type에 따라 길게 눌러야 작동할지, 짧게 눌러야 작동할지가 결정된다. 밑에 있는 interactions도 잊지말고 설정해주자. 한 번 짧게 누를 때 상호작용을 원한다면 Press only로 설정해주자.

2. Rigidbody

오브젝트가 벽을 통과하게 하기는 싫고 그렇다고 부딪혔을때 날아가는 경험이 있다면 이 방법을 써보자

회전하면서 날아가는 것을 막아주고 Y축을 고정해 날아가지 않게 해준다.

3. Gizmo

오브젝트를 감지하는 방법은 여러가지가 있지만... 난 tag와 layer를 사용했다. 플레이어가 어느정도의 범위를 감지할 건지 시각적으로 확인하기 위해 Gizmo를 사용하였다.

    [Header("플레이어 참조")]
    public Transform playerTransform;              // 감지 기준이 되는 플레이어

    [Header("감지 범위 설정")]
    public Vector3 detectionSize = new Vector3(1.5f, 1.2f, 1.8f);
    public Vector3 offset = new Vector3(0, 0.6f, 0.85f);

    [Header("기즈모 표시")]
    public Color gizmoColor = Color.red;
    public bool showGizmo = true;

이렇게 하면 inpector창에서 감지 범위, 기즈모 on off, 색 지정까지 내마음대로 커스텀할 수 있다.

Gizmos.DrawWireCube(GetCenter(), detectionSize);

기즈모는 DrawSphere, DrawCube 등 모양이 여러가지가 있으니 선택해서 사용하면 되겠다.

4. 오늘 겪은 힘든 일

계속 G키 상호작용을 테스트 해보는데 길게 눌러야 상호작용이 돼서 Action Type이 Button으로 되어 있는데 왜 그러지? 하고 헤맸었다. 알고보니 기본으로 press가 아니라 hold로 되어 있어서 바꿔줘야 했다.

5. 내일 할 일

부트캠프 쪽에서 제공하는 강의를 듣고 이론 공부를 좀 할 예정이다.

0개의 댓글