Falling Foods 개발일지2

SMN·2025년 4월 13일

Falling Foods

목록 보기
3/8
post-thumbnail

1. PlayerInput (입력관리)

2. PlayerMove (이동)

3. CameraMove (카메라 이동)

스크립트를 작성 할 것인데, 먼저 내가 작성 할 것은 캐릭터가 플레이어의 입력에 따라 움직이는 코드를 만들 것이다. 먼저 직접적으로 플레이어가 움직이는 입력을 받기전에 PlayerInput이라는 중간다리 역할의 스크립트를 만들 것이다.

먼저 PlayerInput스크립트에서는 플레이어의 입력만을 받는 코드를 작성하였다. 여기서는 Move라는 프로퍼티로 플레이어의 wasd나 방향키의 입력을 받게되고 싱글톤을 작성하였기에 다른 코드에서 PlayerInput.Instance. ~~ 로 접근이 수월해진다.

여기서 살짝 해맨 부분에

public Vector3 move{ get; private set;}

이렇게 작성하였을때는 이상하게 move의 x,y,z값들을 수정할 수 없었고, Normalize또한 실행이 안되었다. 그래서

    private Vector3 move;
    public Vector3 Move { get { return move; } }

이렇게 작성하니까 잘 되는 것을 알게되었다.

PlayerMove 스크립트.

먼저 Rigidbody로 움직여야 하기에 Rigidbody를 Awake에서 가져오고
speed로 속도를 조절하기 위하여 [SerializeField]로 Inspector에서도 조절할수 있게끔 하였다.
이후 움직이는 코드는 물리적인 연산을 하기에 FixedUpdate에서 호출하였다.
Move안에 있는 움직이는 코드는 MovePosition을 사용하였는데 이 이유는 물리적인 충돌을 감행해야 하기 때문에 맵을 뚫지 못하게끔 하기 위해 사용했고 rigidBody.position + 이동할 거리 , 이런식으로 작성하여 입력에따라 움직일 수 있게끔 하였다.

이후 캐릭터 안에 PlayerMove와 PlayerInput을 추가했고 speed도 정해주었다.

근데 살짝 아쉬운 것 같은 부분은 PlayerInput에 싱글톤을 두었는데 캐릭터에 두는게 이상했다. 이럴꺼면 PlayerInput의 이름은 InputManager로 바꾼다던가, PlayerInput의 싱글톤을 없애고 PlayerMove에서 GetComponent로 가져오면 어떨까 생각했다.

현 상황

이번엔 카메라가 플레이어를 따라가는 스크립트를 작성해보도록 하겠다.

cameraMove는 플레이어를 계속해서 따라가는 스크립트로, 내 생각에는 캐릭터를 찾고 offset을 더해서 하면 될 것 같다.

CameraMove 스크립트.

target에 Character를 넣어주었고, positionOffset으로 추가적인 위치를 더해주었다.

여기서 중요한 점은 LateUpdate에 카메라이동 코드를 작성하였는데 Camera 같은 경우에 다른 Update에 있을 경우 화면이 달달달~ 떨리는 그런 현상이 있을 수 있기에 Update중에서 가장 마지막에 호출되는 LateUpdate에다가 작성한다.

mainCamera에 스크립트를 추가해주고, 회전값을 미리 잡아준다. 이후에 오프셋을 설정해주면 플레이어를 따라가는 카메라가 완성된다.

개발기간 250413
profile
모든 생각까지

0개의 댓글