profile image

L o a d i n g . . .

article thumbnail image
Published 2020. 9. 16. 23:46
반응형

Camera

Input Manager에 마우스 처리 기능을 추가한 후, Player Controller에서 화면 클릭 시 해당 좌표로 이동하게끔 구현했다.

private void Update()
{
    if(_moveToDest)
    {
        // 바닥을 찍었을 때 그쪽으로 감
        Vector3 dir = _destPos - transform.position;

        // 도착했다면
        if (dir.magnitude < 0.0001f)
        {
            _moveToDest = false;
        }
        else
        {
            transform.position = transform.position + dir.normalized * _speed * Time.deltaTime;
            transform.LookAt(_destPos);
        }
    }
}

이동은 하는데... 무서워졌다... 😑

 

목적지 근처에 도착하고 나서도 계속 해당 위치로 이동하려고 하기 때문에 이런 현상이 발생한다.
=> Mathf.Clamp 함수를 이용하여 최대값, 최소값을 지정해 주면 해결 가능하다.

private void Update()
{
    if(_moveToDest)
    {
        // 바닥을 찍었을 때 그쪽으로 감
        Vector3 dir = _destPos - transform.position;

        // 도착했다면
        if (dir.magnitude < 0.0001f)
        {
            _moveToDest = false;
        }
        else
        {
            float moveDist = Mathf.Clamp(_speed * Time.deltaTime, 0, dir.magnitude);
            
            transform.position += dir.normalized * moveDist;
            transform.LookAt(_destPos);
        }
    }
}

 

로테이션 X가 자꾸 수정되는데 왜 이러는지는 잘 모르겠다...

=> 방금 해결했다! Rigidbody의 Is Kinematic을 꺼 놔서 물리가 적용되고 있었다!!!

 

Raycast를 이용해 벽을 만나면 카메라 위치 이동하기.

현재 캐릭터의 기준점이 발인 것과 조금 더 부드럽게 처리하게끔 수정하고 싶다.

 

 

Animation 기초

Animation: 레거시 애니메이션, 구 버전에서 사용하던 애니메이션(요즘은 사용 잘 안 함...)

Animator: 메카님 애니메이션

Animator를 컨트롤하는 Animator 전용 Controller를 만들어서 사용해야 한다. 

 

애니메이션 테스트

 

 

Animation Blending

부자연스럽게 애니메이션이 끊긴다...
=> blending 기술 이용! 일정 비율로 애니메이션을 재생한다.

 

 

State 패턴

public enum PlayerState
{
    Die,
    Moving,
    Idle,
}

PlayerState _state = PlayerState.Idle;

움직이는 상태에서 스킬 처리가 들어가게 되면, 까다로워지기 시작한다.

 

State Machine

transition을 만들어 주면, 블렌딩 처리를 코드에서 하지 않아도 된다.

Has Exit Time: 끝나는 지점이 있으면 빠져 나와라.

Fixed Duration: check 시, Exit Time(절대 초 기준)으로 작동한다. check 해제 시, Exit Time(퍼센트 기준)으로 작동한다.

반응형
복사했습니다!