๋‹ค๋ฅธ๊ฑฐ๋ž‘ ๋น„๊ตํ•˜๋ฉฐ์„œ ๋งŒ๋“ค์–ด์„œ ์ผ๋‹จ ์ด๋ฏธ์ง€ ์บ๋ฆญํ„ฐ ์ด๋ฏธ์ง€๋บด๊ณค ์™„์ „ํžˆ ๋‹ค ๋˜‘๊ฐ™๊ฑฐ๋“ ์š”?


๊ทผ๋ฐ ์บ๋ฆญํ„ฐ๊ฐ€ ์ ํ”„ํ•ด์„œ ๋‹ค๋ฅธ ์žฅ์• ๋ฌผ๋กœ ์˜ฌ๋ผ๊ฐ€๋ฉด ์ ํ”„๊ฐ€ ์•ˆ๋ฉ๋‹ˆ๋‹ค.. ์ ํ”„ํ‚ค๊ฐ€ ์•ˆ๋จน์–ด์š”.


์›๋ณธ์Šคํฌ๋ฆฝํŠธ ๊ทธ๋Œ€๋กœ ๊ธ์–ด์˜จ๊ฑด๋ฐ.. ์ด์œ ๊ฐ€ ๋ญ์ง€์š”? ์˜ˆ์ƒ๊ฐ€๋Š” ๋ฌธ์ œ์  ์žˆ์œผ์‹ ๊ฐ€์š”?


๋งŒ๋“  ์บ๋ฆญํ„ฐ์ด๋ฏธ์ง€ ์ž˜ ์ ์šฉ๋˜๋Š”์ง€ ํ™•์ธํ•ด๋ณด๋ ค๊ณ  ํ”„๋กœ์ ํŠธ ํ•˜๋‚˜ํŒŒ์„œ ์›๋ณธ์ด๋ž‘ ๋˜‘๊ฐ™์ด ํ–ˆ๋Š”๋ฐ.. ์ปดํฌ๋„ŒํŠธ๋ผ๋˜์ง€ ์†Œ์Šค๋ผ๋˜์ง€..


์™œ ์•ˆ๋˜๋Š”๊ฑฐ์ง€.. ์ฒซ์žฅ์• ๋ฌผ์—์„œ๋Š” ์ ํ”„๊ฐ€ ๊ณ„์† ์ž˜๋˜๋Š”๋ฐ ๋‹ค๋ฅธ ์ง€ํ˜•์œผ๋กœ ์ ํ”„ํ•ด์„œ ์˜ฌ๋ผ๊ฐ€๋ฉด ๋ฐฉํ–ฅํ‚ค๋ž‘ ์ ํ”„ํ‚ค๊ฐ€ ์•ˆ๋จน๊ณ 


๊ณต๊ฒฉํ•ด์•ผ์ง€ ๊ทธ์ œ์„œ์•ผ ๋ฐฉํ–ฅํ‚ค๋งŒ ๋จน์Œ..


float jump = Input.GetAxis("Jump");

if(jump > 0.0f)

{

if(onStateChange != null)

onStateChange(PlayerStateController.playerStates.jump);

}


---------------------------------------------------------------


case PlayerStateController.playerStates.jump:

if (playerlanding)

{

// ํ”Œ๋ ˆ์ด์–ด๊ฐ€ ์™ผ์ชฝ/์˜ค๋ฅธ์ชฝ/์œ„์ชฝ์œผ๋กœ ์ ํ”„ํ• ์ง€๋ฅผ ์ง€์ •

float jumpDirection = 0.0f;

if (currentState == PlayerStateController.playerStates.left)

jumpDirection = -1.0f;

else if (currentState == PlayerStateController.playerStates.right)

jumpDirection = 1.0f;

else

jumpDirection = 0.0f;


// ์‹ค์ œ๋กœ ์ ํ”„ํ•˜๋Š” ํž˜์„ ์ ์šฉ

rigidbody2D.AddForce(new Vector2(jumpDirection * playerJumpForceHorizontal, playerJumpForceVertical));


playerlanding = false;

// ํƒ€์ด๋จธ๊ฐ€ 0์ด๋ฉด ์‹คํ–‰X = ์ ํ”„ ํ—ˆ์šฉ X

PlayerStateController.stateDelayTimer[(int)PlayerStateController.playerStates.jump] = 0f;

}

break;



case PlayerStateController.playerStates.landing:

playerlanding = true;

// ์ฐฉ์ง€ ์ผ์–ด๋‚œ ํ›„ 0.1 ์ดˆํ›„์— ๋‹ค์‹œ ์ ํ”„ ํ—ˆ์šฉ

PlayerStateController.stateDelayTimer[(int)PlayerStateController.playerStates.jump] = Time.time + 0.1f;

break;


case PlayerStateController.playerStates.falling:

PlayerStateController.stateDelayTimer[(int)PlayerStateController.playerStates.jump] = 0.0f;

break;


-----------------------------------------

case PlayerStateController.playerStates.jump:

ย  ย  ย  ย  ย  ย  ย  ย  // ์ ํ”„ ์ƒํƒœ์—์„œ ๋„˜์•„๊ฐˆ ์ˆ˜ ์žˆ๋Š” ์ƒํƒœ๋Š” landing(์ฐฉ์ง€)์ด๋‚˜ kill๋ฟ

ย  ย  ย  ย  ย  ย  ย  ย  if ( newState == PlayerStateController.playerStates.landing || newState == PlayerStateController.playerStates.killย 

ย  ย  ย  ย  ย  ย  ย  ย  ย  ย  || newState == PlayerStateController.playerStates.weapon )

ย  ย  ย  ย  ย  ย  ย  ย  ย  ย  returnVal = true;

ย  ย  ย  ย  ย  ย  ย  ย  else

ย  ย  ย  ย  ย  ย  ย  ย  ย  ย  returnVal = false;

ย  ย  ย  ย  ย  ย  ย  ย  break;


ย  ย  ย  ย  ย  ย  case PlayerStateController.playerStates.landing:

ย  ย  ย  ย  ย  ย  ย  ย  // ์ฐฉ์ง€ ์ƒํƒœ์—์„œ ๋„˜์–ด๊ฐˆ ์ˆ˜ ์žˆ๋Š” ์ƒํƒœ๋Š” idle, left, right ์ƒํƒœ

ย  ย  ย  ย  ย  ย  ย  ย  if ( newState == PlayerStateController.playerStates.left || newState == PlayerStateController.playerStates.right || newState == PlayerStateController.playerStates.idle

ย  ย  ย  ย  ย  ย  ย  ย  ย  ย  || newState == PlayerStateController.playerStates.weapon )

ย  ย  ย  ย  ย  ย  ย  ย  ย  ย  returnVal = true;

ย  ย  ย  ย  ย  ย  ย  ย  else

ย  ย  ย  ย  ย  ย  ย  ย  ย  ย  returnVal = false;

ย  ย  ย  ย  ย  ย  ย  ย  break;