-
유니티2D 다운점프/아래점프 플랫폼 구현쾌락없는 책임 (공부)/Unity 2020. 12. 23. 11:23반응형
<플레이어의 스크립트중 점프와 아래점프>
//JUMP isGround = Physics2D.OverlapCircle(pos.position, checkRadius, islayer); if (Input.GetKeyDown(KeyCode.Space) && jumpCount > 0 && !Input.GetButton("Vertical")) { rigid.velocity = Vector2.up * jumpPower; } if (Input.GetKeyUp(KeyCode.Space)) { jumpCount--; } if (isGround) { jumpCount = maxJump; } //DownJump if (Input.GetKeyDown(KeyCode.Space) && Input.GetButton("Vertical")){ Debug.Log("아래점프"); GameObject.FindWithTag("DownPlatform").GetComponent<DownPlatform>().ChangeLayer(); Debug.Log("아래점프2"); }
<아래점프를 할 플랫폼에 있는 코드>
public void ChangeLayer(){ gameObject.layer = 15; StartCoroutine("ReturnLayer"); } IEnumerator ReturnLayer(){ yield return new WaitForSeconds(2f); gameObject.layer = 8; }
<흐름도>
1. 플레이어 방향기 아래/위를 누른 채 스페이스바(점프) 클릭
2. DownPlatfom 이름을 가지는 오브젝트를 찾아 Layer을 15로 바꿔줌
- 유니티 프로젝트 세팅에서 15번의 레이어(isTrigger)와 Player레이어는 충돌할 수 없게 해줌
3. 2초 뒤 다시 레이어를 정상화
<개선점>
1. 지금은 플레이어의 점프를 플레이어 아래의 빈 오브젝트를 이용해 구현했지만 만일 다른 프로젝트를 만든다면 Ray를 이용한 점프를 구현할 것이고 그러면 점프 코드가 저렇게 되지는 않을 것이다.
- 지금의 코드는 if 조건안에 뭐가 많이 들어가 있어서 복잡
2. Ray로 한다면 Ray로 닫는 플랫폼 하나만 레이어를 바꿔서 만들 수 있을 것이다.
- 그런데 이건 플랫폼으로 처리를 하고 있다 보니 오히려 플랫폼 전체를 트리거화 하는게 나을 수 있다.
3. 플레이어가 지나간 후 일정 시간 뒤 레이어 리턴이 아닌 개선할 필요가 있음
- 위 코드는 여러 다운플랫폼을 지나갈 때 문제가 생길 것 같음
2020.12.23 작성완료
반응형'쾌락없는 책임 (공부) > Unity' 카테고리의 다른 글
유니티 - 보스몬스터 패턴 1 : 플레이어 감지 후 공격 (0) 2021.01.03 유니티 UI에 변수 표시 (0) 2020.12.28 [유니티] 플레이어 능력치 버프/ui표현 (0) 2020.12.01 유니티에 VS code 사용법 (in Mac) (0) 2020.11.30 플레이어를 추적하는 몬스터 만들기 (0) 2020.11.27