일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- MLFQ
- MAC
- DSP
- link layer
- RBAC
- 메카님
- stride
- 유스케이스
- STCF
- Security
- polymorphism
- convolution
- Unity #Indie Game
- 운영체제
- SNR
- Race condition
- 배경 그림
- pdlc
- frequency-domain spectrum analysis
- dtft
- 게임개발
- ret2libc
- dirty cow
- Frequency Response
- DP
- 유니티
- 게임 개발
- AINCAA
- linear difference equation
- sampling theory
Archives
- Today
- Total
다양한 기록
Parrying Sword #7 : [기획][프로그래밍] 벽 잡기 (등반) 구현 본문
플레이어의 액션 중, 벽타기가 추가 되었습니다.
// 클라이밍 ****************************************
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 |