์ด๋ณด์์ฉ ์์ ๋ณด๋ฉด์ ์ ํํ๋๊ฑฐ ๊ฒจ์ฐ๊ฒจ์ฐ ๋ฐ๋ผํ๋๋ฐ
๊ณ ์ ๊ฒ์๋ง๋ฅ ์ฒด๊ณตํ์ฑ๋ก ์ด๋์ด ๋จ
๊ณต์ค์ ๋ ์ ๊ด์ฑ์ ๊ฑฐ์ค๋ฅด๊ฒ ์์ง์ด๋๊น ์ด์ํจ;
๊ทธํ๋ ์ ๋น๊ฒ์ฒ๋ผ ์ ํํ๋ฉด ๊ทธ ๋ฐฉํฅ์ผ๋ก ์ญ ๊ฐ๊ฒ ๋ง๋ค๊ณ ์ถ์ ์ํฉ์
์ฌ๊ธฐ์ ์ง๋ฌธ์ธ๋ฐ
์ฒซ์งธ๋ก, A ๋ณ์๊ฐ ์คํ์ค B๋ณ์๊ฐ ์ฐจ๋จ๋๋๋ก ํ๋ ์คํฌ๋ฆฝํธ๊ฐ ๊ถ๊ธํจ.
๊ฐ์ ์์์, ์์์ฑ ์คํ๋ฆฐํธ ์ฐ๋ฉด ์๊ธฐ ํด์ ๋๊ฒ ํ๋ ์คํฌ๋ฆฝํธ๊ฐ ์จ์ ธ์๋๋ฐ
private void Running()
{
if(isCrouch)
Crouch();
}
์์. ์ด๊ฑธ ์์ฉํ๋ค๋ฉด isJump ๋ผ๋ ๋ณ์๋ฅผ ๋ง๋ค์ด์
private void Jump()
{
if(isJump)
Move๋ชปํ๊ฒํ๋์คํฌ๋ฆฝํธ();
}
์ด๋ฐ ์์ผ๋ก ์์ฉ ํ ์ ์์ ๊ฒ ๊ฐ์๋ฐ, 'Move๋ชปํ๊ฒํ๋์คํฌ๋ฆฝํธ'๋์ ๊ทธ๋ฅ Move๋ฅผ ์จ์ ์ ํ+๋ฐฉํฅ์กฐ์์ ๊ฐ๋ฅํ์ง๋ง ์ ํ์ ๋ฐฉํฅ์กฐ์ ๋ชปํ๊ฒ ํ๋ ๋ฐฉ๋ฒ์ ์๊ณ ์ถ๋ค;
!Move๋ ์จ๋ดค๋๋ฐ !๋ ์ด๋ด๋ ์ฐ๋๊ฒ ์๋๋ผ๊ณ ์๋ฌ๋ง ๋์ด
๋๋ฒ์งธ ์ง๋ฌธ์, ์ฒซ๋ฒ์งธ์ ๋์์ผ๋ก ์ ํ 0.1์ด ํ ๋ถํฐ ์ฐฉ์ง์ํ (isGround ๋ผ๊ณ ๋ณ์ ๋ง๋ค์ด ๋์)์ ๊น์ง Move๊ฐ ์๋๋์ง ์๋๋ก ํ๋ ๋ฐฉ๋ฒ์ด ์์ ๊ฒ ๊ฐ์๋ฐ ์ด๋ด๋ ์ด๋ค ์คํฌ๋ฆฝํธ๋ฅผ ํ์ฉ ํ ์ ์์๊น?
์ธ๋ฒ์งธ ์ง๋ฌธ์, ๋ง์ผ ์์ ๊ฐ์ด ์คํฌ๋ฆฝํธ๋ฅผ ์ธ ๊ฒฝ์ฐ ์ ํ+๋ฐฉํฅํค๊ฐ ๋จน์ง ์์ํ ๋ ์ ์๋ฆฌ ์ ํ๋ง ๊ฐ๋ฅํด ์งํ ๋ฐ, ๋๋จธ์ง ๋ค์ฏ๊ฐ์ง ์ ํ๋ฅผ ๊ตฌํํ๊ธฐ ์ํด์๋ ์ ํ๋ฒํผ์ ๋๋ฅด๊ธฐ ์ ๋ง์ง๋ง์ผ๋ก ์ด๋ํ๋ ๋ฐฉํฅ+์ ํ๊ฐ ๋์์ ์ด๋ฃจ์ด์ ธ์ผ ํ ๊ฒ ๊ฐ์๋ฐ.. ์ด๊ฑธ ์๋ ค๋ฉด ๋ญ๋ผ๊ณ ๊ฒ์์ ํด๋ด์ผ ์ ๋ณด๋ฅผ ์ป์ ์ ์์๊น?
์ง๊ธ ์คํฌ๋ฆฝํธ๋ ๋๋ต
Move๋
ย private void Move()
ย ย {
ย ย ย ย float _moveDirX = Input.GetAxisRaw("Horizontal");
ย ย ย ย float _moveDirZ = Input.GetAxisRaw("Vertical");
ย ย ย ย Vector3 _moveHorizontal = transform.right * _moveDirX;
ย ย ย ย Vector3 _moveVertical = transform.forward * _moveDirZ;
ย ย ย ย Vector3 _velocity = (_moveHorizontal + _moveVertical).normalized * applySpeed;
ย ย ย ย myRigid.MovePosition(transform.position + _velocity * Time.deltaTime);
ย ย }
์ ํ ๊ด๋ จ์
// ์ ํ ์๋
ย ย private void TryJump()
ย ย {
ย ย ย ย if(Input.GetKeyDown(KeyCode.Space) && isGround)
ย ย ย ย {
ย ย ย ย ย ย Jump();
ย ย ย ย }
ย ย }
ย ย // ์ ํ
ย ย private void Jump()
ย ย {
ย ย ย ย // ์์ ์ํ์์ ์ ํ์ ์์ ์ํ ํด์
ย ย ย ย if(isCrouch)
ย ย ย ย ย ย Crouch();
ย ย ย ย myRigid.velocity = transform.up * jumpForce;
ย ย }
์ด๋ฐ์์ผ๋ก ์ง์ฌ์ ธ ์์
๋ฐ๋์์ ๋ฐ๋
์ ํ ์ค์ ๋ฌด๋ธ๋ฅผ ๋ชปํ๊ฒ ํ๋๊ฒ ์๋๋ผ ์ ํ ์ค์ด ์๋๋ ๋ฌด๋ธ๊ฐ ๊ฐ๋ฅํ๋๋ก ํ๋๊ฒ ๋ง์ง
์ด ๋๊ธ์ ๊ฒ์๋ฌผ ์์ฑ์๊ฐ ์ญ์ ํ์์ต๋๋ค.
์ง๊ธ๋ ์ ํ์ค์ด ์๋๋ ๋ฌด๋ธ๋ ๊ฐ๋ฅํ๋ฐ ํน์ '์ ํ์ค์ด ์๋๋ ๋ฌด๋ธ๊ฐ ๊ฐ๋ฅํ๋ค' ๋ผ๊ณ ๋ฐ๋ก ์ ์ด๋์์ผ ํ๋๊ฑฐ์ผ? ๋ผ๊ณ ?
๋ง์ ์ข ๋ฐ๊ฟ์, ์ ํ ์ค์ด ์๋ ๋'๋ง' ๋ฌด๋ธ๊ฐ ๊ฐ๋ฅํ๊ฒ ๋ง๋ค๋ผ๋ ์๊ธฐ์
์ ํ ์ํ๊ธฐ๊ณ ๋ฌธ์ ์ธ๋ฐ ์ ๋ํฐ๋ฅผ ์ํด๋ด์ ์ด๋ป๊ฒ ๊ตฌํํด์ผํ๋์ง๋ ๋ชจ๋ฅด๊ฒ ๋ค
์๋ฅผ ๋ค์ด์ '์ ํ ์ค์ผ๋'์ธ ์ํ์ '๊ฑท๋ ์ค์ผ ๋', '์ ์งํด ์์ ๋' ๊ฐ์ ์ํ๋ฅผ ๋ง๋ค์ด๋๊ณ ๊ฐ ์ํ๋ง๋ค ์ด๋ค ๋์์ด ๊ฐ๋ฅํ์ง ์ ํด๋์ผ์
์ ๋ฐ์ดํธ๋ก ์ํ ํ์ธํ๋ฉด์ ์ ํ ๋์ ์คํ ์ค์ด๋ฉด ๋ค๋ฅธ ๋์์ด ์ ๋ ฅ๋์ง ์๋๋ก ๋ง์
ํ ํํํ ๋ฐฉ๋ฒ์ ๋ชจ๋ฅด๊ฒ ๋ค ๊ณต๋ถ ๋ ํ๊ณ ์๋ํด์ผ์ง
FSM์ ๋ํด ๊ณต๋ถํด๋ด
๋๋ผ๋ฉด ์ง์์ผ๋ ์์ง์ด๋ ์คํฌ๋ฆฝํธ๋ฅผ ์งฐ์
์ ํํ ๋ ๋ฐฉํฅ์กฐ์ ๊ฐ๋ฅ OFF => ๋ฐ๋ฅ ์ฐฉ์งํ ON ! OK?
๊ทผ๋ฐ ์ด๋ ๊ฒ ํ๋ฉด ์์ผ๋ก ๊ฐ๋ค ์ ํํ ๋ ์ ์๋ฆฌ๋ฐ๊ธฐ๊ฐ ๋ผ๋ฒ๋ฆฌ๋๋ผ..