-
유니티 - 플레이어 슬라이딩 구현쾌락없는 책임 (공부)/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 함수를 부르는 시간을 조절가능 ( 아이템이나 능력치 등 설정 가능)
반응형'쾌락없는 책임 (공부) > Unity' 카테고리의 다른 글
[유니티 2D 스터디] 캐릭터 이동, 벽 충돌처리 (0) 2021.03.11 유니티 - 플레이어에게 총을 쏘는 적 (0) 2021.01.15 유니티 - 보스몬스터 패턴 1 : 플레이어 감지 후 공격 (0) 2021.01.03 유니티 UI에 변수 표시 (0) 2020.12.28 유니티2D 다운점프/아래점프 플랫폼 구현 (0) 2020.12.23