ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 유니티 - 플레이어 슬라이딩 구현
    쾌락없는 책임 (공부)/Unity 2021. 1. 4. 21:49
    반응형

    <플레이어의 Update 함수에 있는 슬라이딩 코드>

            // Sliding
            if (isGround == true && Input.GetKeyDown(KeyCode.LeftShift) && canSlide == true) {
                animator.SetBool("isSliding", true);
                canSlide = false;
                maxSpeed *= 2f;                             // Speed up
                gameObject.layer = 12;                      // become invincible
                Invoke("slidingFalse", 0.5f);               // todo : invoke의 시간을 변수로 변경하자
                Invoke("TFslide", 1f);                      // 1f is delay time
            }

    <플레이어의 FixedUpdate 함수에 있는 슬라이딩 코드>

        //Sliding
        void slidingFalse() {
            maxSpeed = maxSpeed/2.0f;
            animator.SetBool("isSliding", false);
            if(isInvincible) {
            } else {
                gameObject.layer = 11;          // invincible time end
            }                                                           
        }
        void TFslide() {
            if (canSlide == false)
                canSlide = true;
        }

     

    <간단 설명>

    - 애니메이션 설정에서 isSliding 설정을 하고 옴

    - 왼쪽 쉬프트키가 슬라이딩 키며 땅에 붙어있을 때만 가능하게끔 했다

        - 점프나 벽에 붙는 모션이 있어 이 과정은 필수

    - 플레이어의 이동속도는 masSpeed함수로 제어하고 있는데 슬라이딩시 2배 증가하고 슬라이딩이 끝나면 다시 원래대로 돌아오게 함

    - 슬라이딩을 하는 도중에는 0.5초동안 무적 상태가 됨 ( layer 12번이 몬스터 레이어와 맞지 않게 설정함 )

    - isInvincible변수의 경우 플레이어를 무적으로 만드는 아이템을 위해서 넣은 변수

        - 무적상태( layer == 12 )인 상태에서 슬라이딩을 하게 되면 SlidingFalse함수가 실행되어 다시 레리어가 돌아와버린다.

        - 게임 안에 설정으로 설명을 넣을 수도 있지만 일단 bool변수 하나를 추가해서 무적상태이면 레이어 변동이 없게 함

    - TFslide의 경우 슬라이딩을 하는 도중 슬라이딩을 또 할 수 없게 제어하기 위함

        - canSlide변수가 true일때만 슬라이딩이 가능.

        - 이 TFslide 함수를 부르는 시간을 조절가능 ( 아이템이나 능력치 등 설정 가능)

    반응형

    댓글

Designed by Tistory.