-
Parrying Sword #7 : [기획][프로그래밍] 벽 잡기 (등반) 구현유니티 게임 개발/메인 프로젝트: Parrying Sowrd 2023. 2. 17. 11:14
플레이어의 액션 중, 벽타기가 추가 되었습니다.
// 클라이밍 **************************************** if (Input.GetKey(KeyCode.UpArrow) && !climbJump && playerCtrl.actionActive) { if (playerCtrl.ActionClimb()) { climbing = true; } } if (Input.GetKeyUp(KeyCode.UpArrow)) { climbing = false; climbJump = false; playerCtrl.ActionUndoClimb(); } if (Input.GetKeyDown(KeyCode.Space) && climbing) { climbing = false; climbJump = true; playerCtrl.ActionUndoClimb(); playerCtrl.ActionMustJump(); } // *********************************************** if (wire == 1 || climbing) return;
인풋 매니저의 역할을 하는 PlayerMain에서의 코드입니다.
키보드에서 위쪽 방향키를 누르는 동안 스페이스 바를 눌러 점프를 시도하거나 위 방향키를 놓을 때까지 지속해서 벽을 잡고 있는 형식으로 코드를 작성하였습니다. climbing과 climbJump 변수 두 가지를 사용해 캐릭터의 상태를 조절합니다.
그리고 클라이밍 중에는 그 밖의 공격같은 행동은 못하도록 리턴합니다.
wire == 1 부분은 와이어 액션과 관련된 변수로, 와이어 액션 도중에도 클라이밍 할 때 처럼 공격 시도를 못하도록 막는 부분입니다.
와이어 액션에 대해서는 다음 게시물에서 다룰 예정입니다.
if (!grounded && !climbing && !usingWire ) { animator.SetTrigger("Jump"); }
// 성공 시 true 리턴 public bool ActionClimb() { Collider2D[] colliders = Physics2D.OverlapPointAll(roadConnection.position); foreach( Collider2D col in colliders ){ if( col.tag == "Road" ) { climbing = true; animator.SetTrigger("Climb"); rb.constraints = RigidbodyConstraints2D.FreezeAll; return true; } } return false; } public void ActionUndoClimb() { climbing = false; rb.constraints = RigidbodyConstraints2D.FreezeRotation; } public void ActionMustJump() { force_y = jumpAccel_y * rb.mass; }
플레이어의 행동을 구체적으로 정의한 PlayerController에서의 코드입니다.
벽과 닿아있다는 판정을 알기 위한 오브젝트를 하나 만들어 두었고, 닿아있다면 벽 잡기가 가능한 상태입니다.
벽 잡기를 할 경우, RigidBody2D 컴포넌트에서 x, y축 이동을 고정해서 움직이지 않는 것처럼 보이게 만듭니다.
그리고 벽 잡기를 해제할 경우 원래대로 되돌립니다.
벽을 잡은 상태에서 점프를 할 경우, 지면에 닿아있는 상태가 아니기에 지면 체크 없이 점프를 시키는 함수가 필요하여 작성하였습니다.
'유니티 게임 개발 > 메인 프로젝트: Parrying Sowrd' 카테고리의 다른 글
Parrying Sword #9 : [기획][프로그래밍] 폭탄 구현 중 (0) 2023.02.17 Parrying Sword #8 : [기획][프로그래밍] 와이어 액션 구현 (0) 2023.02.17 Parrying Sword #6 : [기획] 플레이어 액션 구현 (0) 2022.11.21 Parrying Sword #5 : [프로그래밍] 맵의 가장자리를 벽으로 둘러 싸기 (0) 2022.11.13 Parrying Sword #4 : [아트] 캐릭터 스탠딩, 달리기 일부 (0) 2022.11.11