void FixedUpdate () {
ย ย ย ย bool wasGrounded = isGrounded;
ย ย ย ย Collider2D[] colliders = Physics2D.OverlapCircleAll(groundCheck.position, checkRadius, whatIsGround);
ย ย ย ย for (int i = 0; i < colliders.Length; i++)
ย ย ย ย {
ย ย ย ย ย ย if (colliders[i].gameObject != gameObject)
ย ย ย ย ย ย {
ย ย ย ย ย ย ย ย isGrounded = true;
ย ย ย ย ย ย ย ย if (!wasGrounded)
ย ย ย ย ย ย ย ย ย ย animator.SetBool("Jump", false);
ย ย ย ย ย ย }
ย ย ย ย }
ย ย ย ย moveInput = Input.GetAxisRaw("Horizontal");
ย ย ย ย Vector3 targetVelocity = new Vector3(moveInput * speed * Time.fixedDeltaTime, rb.velocity.y);
ย ย ย ย rb.velocity = Vector3.SmoothDamp(rb.velocity, targetVelocity, ref refVelocity, m_MovementSmoothing);
ย ย ย ย animator.SetFloat("Speed", Mathf.Abs(moveInput) * speed);
ย ย ย ย if (facingRight == false && moveInput > 0) {
ย ย ย ย ย ย Flip();
ย ย ย ย }
ย ย ย ย else if (facingRight == true && moveInput < 0) {
ย ย ย ย ย ย Flip();
ย ย ย ย }
ย ย ย ย ย
}
ย ย void Update()
ย ย {
ย ย ย ย if (isGrounded == true)
ย ย ย ย {
ย ย ย ย ย ย extraJumps = 1;
ย ย ย ย }
ย ย ย ย if (Input.GetButtonDown("Jump") && extraJumps > 0)
ย ย ย ย {
ย ย ย ย ย ย isGrounded = false;
ย ย ย ย ย ย animator.SetBool("Jump", true);
ย ย ย ย ย ย rb.velocity = new Vector2(rb.velocity.x, jumpForce);
ย ย ย ย ย ย extraJumps--;
ย ย ย ย }
ย ย ย ย else if (Input.GetButtonDown("Jump") && extraJumps == 0 && isGrounded == true)
ย ย ย ย {
ย ย ย ย ย ย isGrounded = false;
ย ย ย ย ย ย animator.SetBool("Jump", true);
ย ย ย ย ย ย rb.velocity = new Vector2(rb.velocity.x, jumpForce);
ย ย ย ย }
ย ย }
์๊น์ ์ ์ง๋ฌธ ์ฌ๋ ธ๋๋ฐ ์ด ์ง๋ฌธ์ ๋ํด์ ๋ต๋ณ ํด์ค ์ฌ๋์ด ์์ด์ ใ ๊ณ์ ๋ด๋ ๋ชจ๋ฅด๊ฒ ์ด์ ๋ค์ ์ง๋ฌธํ ๊ฒ.ใ .
์ฌ๊ธฐ์ ๊ธฐ์ ์ฝ๋ ๋ณด๊ณ ์ฐธ๊ณ ํ๋ฉด์ ๋ง ํฉ์ณ์ ์บ๋ฆญํฐ ์ด๋ ๋ก์ง์ ๋ง๋ค์๋๋ฐ..
์ ํ ์ ๋๋ฉ์ด์ ์ ๋ฌธ์ ๊ฐ ์๊ฒป์ด.. ๋๋ธ ์ ํ๋ฅผ ๋ง๋๋ ๊ณผ์ ์์ ๋ฌธ์ ๊ฐ ์๊ธด๊ฑด์ง๋ ๋ชจ๋ฅด๊ฒ์ง๋ง
๋ด๊ฐ ์๋ํ ๊ฑด ์ ํ ๋ฒํผ์ ๋๋ฅด๋ฉด ๊ณต์ค์ ๋จ๊ณ , ๊ณต์ค์ ๋ ์๋ ๊ทธ ์๊ฐ๋์์ isGrounded = false๊ฐ ๋๊ณ , animator ์ Jump parameter๋ true์ธ ์ํ์ฌ์ผ ํ๋๋ฐ
์ ํ ๋ฒํผ์ ๋ฑ ๋๋ฅธ ๊ทธ ์๊ฐ๋ง isGrounded = false, Jump = true๊ฐ ๋๊ณ ๊ทธ ๋ค์์ ๋ฐ๋ก isGrounded = true, Jump = false๋ก ๋ฐ๋์ด๋ฒ๋ ค.
๊ทผ๋ฐ parameter๋ฅผ ๋งค๊ฐ๋ก animation transition์ ์ง๋์์ด์ย ์ ํ ์ ๋๋ฉ์ด์ ์ด 0.1์ด ์คํ๋๊ณ ๋ฐ๋ก ์๋ Idle ์ ๋๋ฉ์ด์ ์ด๋ run ์ ๋๋ฉ์ด์ ์ผ๋ก ๋์๊ฐ๋ฒ๋ฆฌ๋๋ผ.
๋ด๊ฐ ์ง ์ฝ๋ ๋ด์ฉ ์ค์ ์ด๋ค ๊ฒ ๋ฌธ์ ์ธ๊ฑด์ง ์๋ฌด๋ฆฌ ๋ด๋ ์ ๋ชจ๋ฅด๊ฒ ์ด..
์ฐธ๊ณ ๋ก ์ ํ ์คํํ๊ณ ์๋ ํ๋ซํผ์ Tilemap์ผ๋ก ์ง์ tilemap collider๋ composite collider ๋๊ฐ ์ฐ๊ณ ์์.
if (colliders[i].gameObject != gameObject) ์์ if (colliders[i].gameObject != gameObject && !isGround) ๋ก ํ๋ฒ ๋ฐ๊ฟ๋ณด๊ณ ์๋๋ฉด ๋งํด์ฃผ์ธ์ฌ
fixed๊ฐ ์ผ๋ฐ ์ ๋ฐ์ดํธ ํจ์๋ณด๋ค ์ ๋ฐ์ดํธ ํ์๊ฐ ์ ์ด์ ๋ฎ์ด ์์์ง๊ฑฐ์๋?
๊ทธ์ผ ์ธํ ๊ฒ ๋ฒํผ '๋ค์ด' ์ผ๋๋ง ์ ์ํ์ด๋๋ก ๋์์ผ๋ ๊ธ์ง.....๊ฑฐ๊ธฐ๋ค ์ ํธ๋ฆฌ๊ฑฐ ๋ ์๋๊ณ ์ ๋ถ์ด๋๊น ์ ๊น ๋ณํ๋ค ๋ฐ๋ก ์์ด๋ค์ค ๋์ด๊ฐ๋๊ฑฐ๊ณ ์ ์ฝ๋ ์๋ ๋ถ๋ถ์ ๊ทธ๋์ด๋๋ ์ผ๋ ์ ์ค(์์ด๋ค,ํธ๋ฃจ) ์ด๊ฑฐ ์์๊ป?
์คํ ใ ใ ์ผ์ด๋์ง ์ผ๋ง ์๋์ ๋น๋ชฝ์ฌ๋ชฝ
COUNTER / ๋ฐ๊ฟ๋ดค๋๋ฐ ๋๊ฐ๋ค์ฌ ใ
cogito / ์ฝ๋ ์๋ถ๋ถ์ void start ์์์ ๋ฆฌ์ง๋๋ฐ๋ ์ฐ๊ฒฐํด์ฃผ๋๊ฑฐ๋ฐ์ ์์ด ใ ใ ๊ทธ ์์๋ ๋ค ๋ณ์ ์ ์ธํด์ฃผ๋ ๋ถ๋ถ์ด๊ณ . ์์ด๋ค ๋งค๊ฐ๋ณ์๋ ๋ฐ๋ก ์ฝ๋๋ฅผ ์์ ์๋๋
marmotru / ๊ทธ๊ฒ ๋๋ฌธ์ด๋ผ๋ฉด update์์ ํจ์๊ฐ ๋ ๋ง์ด ํธ์ถ๋๋๊น ๋ฌธ์ ๊ฐ ์๋๊ฑฐ ์๋๊ฐ
ํน์ ๋ชฐ๋ผ์ ๋งํ์๋ฉด ์๋ค๋จธ์ ๋ ์ฐ๊ณ ์์. ๊ทผ๋ฐ confiner๋ฅผ ์์จ์ ๋ฐ๋ก ์ถฉ๋ ์ผ์ผํฌ ์ผ์ ์๋๊ฑฐ๊ฐ์
์ํผ ๋ฐ๋ก ๋์ด๊ฐ๋๊ฑด ์ธํ ๊ฒ ๋ฒํผ '๋ค์ด' ์ผ๋๋ง ์ ์ํ๊ธฐ ๋๋งค ๊ทธ๋ฐ๊ฑฐ์ผ ์ ๋ฐ์ดํธ๋ฌธ์ด๋ ์ด๋๋ ๋ถ ์ฒดํฌ ํ๋ ๋ฌ์ ์ด๊ฑฐ ์ผ๋ ์ด์ ๋ ์ฌ์ ์ด๋ผ๊ณ ํด์ผ๋จ
๊ทผ๋ฐ ์ด์ฆ๊ทธ๋ผ์ด๋ ์์ฒด๋ ์๊ฐ๋๋ก ์ ์๋ํ๋ ์ฝ๋๋ ์๋ ๊ฑฐ ๊ฐ์์ ๋ณธ์ธ์ ๊ทธ๊ฑฐ ์ ์์
isGround ๋ฐ๊พธ๋๊ฒ๋ง update ์ ๋ฃ๊ณ ๋๋จธ์ง๋ ์ ๋ถ fixedUpdate ์ ์จ๋ณด๋๊ฒ ์ด๋จ๊น์
์ ๋ค๋ค ๋๋ฌด ๊ณ ๋ง๋ค ์ฆ๋ง. ๋ฌผ๋ก ์์ง ๊ณ ์น์ง ๋ชปํจ ใ
COUNTER / ์ ์ ํ if๋ฌธ์ isGrounded = false ๋นผ๊ณ update์ ๋ ๋ฃ์ผ๋ ๋ป์ธ๊ฐ์ฌ? ๊ทธ๋๋ ๋์ฌ?
๋ณด๊ธฐ์๋ ๋ณ๋ก ์ผ์ง๋ ๋ชจ๋ฅด๊ฒ ๋๋ฐ ๋๊ธฐ๋ง ํ๋ฉด ์๊ด์์ผ๋๊น์ฌ, ๊ทผ๋ฐ ๊ถ๊ธํ๊ฒ ์๋๋ฐ ์ ๋ฐ์ดํธ ์ชฝ์์ else if ๋ ๊ผญ ํ์ํ๊ฑด๊ฐ์ฌ?
์ 2๋จ์ ํ๊ตฌ๋
ํ์ผ... ํ๋ก์ ํธ ํ์ผ ์๋ณด๋ฉด ๋ชจ๋ฅผ๊ฒ๊ฐ๋ค์ ใ ใ
COUNTER / ๊ฒฐ๊ตญ ํด๊ฒฐํ์ง ๋ชปํ์ง๋ง ์ฑ์ ๋์น๋ ๋ต๋ณ ๋ฌ์์ค๊ฒ๋ง์ผ๋ก๋ ๋๋ฌด ๊ณ ๋ง์์ฌ
ํ ......ํด๋ฆญ ๋ค์ด์ ์๋ ๋ช ๋ น์ด๋ค ๋ถ์ฒดํฌํด์ ์ ๋ฐ์ดํธ ๋ฌธ์๋ค ๋ฃ์ด๋ดค์ด??? ๋ด๊ฐ ์๋ค๋งํฑ์ ์์จ๋ด์ ๋ชจ๋ฅด๊ฒ ์ง๋ง ์ ๋๋ฉ์ดํฐ์ฐ๋๊ฑฐ๋ฉด ์ํ ๋ณํ๋๋๊ฑธ ํ์ธ ํด๋ณด๋๊ฐ ใ ใ
Cogito / ํ ์ด๊ฒ ์ฝ๊ฐ ์ด์ํ๊ฒ ์ฒ์ ์ ํํ ๋๋ jump ๋งค๊ฐ๋ณ์๊ฐ false์ธ๋ฐ ๋ ๋ฒ์งธ ์ ํํ๋ฉด true๊ฐ ๋ผ. ๊ทผ๋ฐ ์ ๋๋ฉ์ดํฐ๋ฅผ ๋ณด๋ฉด jump ์ ๋๋ฉ์ด์ ์ด ์จ์ ํ ์ฌ์๋๋ ๊ฒ ์๋๋ผ, ์ฒ์ ๋ชจ์ ์์ ๋ฉ์ถฐ์์. ๋ญ๊ฐ ๋ฌธ์ ์ง๋ฅผ ๋ชจ๋ฅด๊ฒ ์ด์ ๋ถ์ฒดํฌ๋ฅผ ์ด๋ป๊ฒ ํด์ผ ํ ์ง ๊ฐ์ด ์์กํ..ใ ใ
Cogito / ์ฐธ๊ณ ๋ก ์ฒซ ๋ฒ์งธ ์ ํ๋๋ ์ ๋๋ฉ์ด์ ์ด ์ฌ์ ์๋๊ณ , ๋ ๋ฒ์งธ ์ ํ๋ ์ ๋๋ฉ์ด์ ์ด ์ฒ์ ํ๋ ์์์ ๋ฉ์ถฐ์์
ํ ....์ผ๋จ ํฝ์ค๋ ์ ๋ฐ์ดํธ ์ชฝ ๋ค ์ ์ธ ์ฒ๋ฆฌํด๋ฒ๋ฆฌ๊ณ if(input.GetbuttonDown("Jump")&&extraJumps==0) { extraJumps++; animator.setbool("jump",true); } ์ด๋ ๊ฒ๋ง ์ง์ด๋ฃ์ด์ ์ ํ ๋ชจ์ ์ถ๋ ฅ๋๋์ง ๋ด๋ฐ ์ด๊ฑฐ ๋๋ฉด ๊ทธ๋ด์ ๊ทธ๋ผ์ด๋ ์ฒดํฌ ํ๋๊ฑฐ ๋ค์ ์ง๋ฃ์ผ์ฌ
์์ค ์ดํ ์ฐ์ง๋ง๊ณ ๊ฑ ์์คํธ๋ผ ์ ํ ==1๋ง ํด์ฃผ๊ณ ๊ทธ๋ผ์ด๋ ์ฑํฌ ๋๋ฉด 0์ผ๋ก ์ด๊ธฐํ ์ํค๊ณ
์ ์์ค ์ดํ ์์ฐ๋ฉด ๋๋ฒ ๋ฌ์์ ๋ฐ๋ ค๋ ์์ค ๋ฏธ์ ์ข ์ ๋๋ก ์ง์ฃผ๊ณ ์ถ์๋ฐ ์์นจ๋ถํฐ ๋น๋ชฝ์ฌ๋ชฝ์ด๋๋์ฌ๋ฆ ๊ฐ๊ธฐ๊ฑธ๋ ค์ ํค๋กฑํค๋กฑ์ด์ผ
Cogito / ์๋์ผ ์ด๋ ๊ฒ ์ค๋ซ๋์ ๋๋ตํด์ฃผ๋๊ฒ๋ง ํด๋ ์์ฒญ ๋์๋๊ณ ๊ณ ๋ง์ ์ง์ง. ์ผ๋จ ํ๋ผ๋ ๋๋ก ํด๋ณผ๊ฒก
Cogito / ์ค์? if (Input.GetButtonDown("Jump")) { animator.SetBool("Jump", true); jump = true; rb.velocity = new Vector2(rb.velocity.x, jumpForce); } ์๋ ๊ฒ๋ง ํ๋๋ฐ ์ ํ ์ ๋๋ฉ์ด์ ์ฒซ ํ๋ ์์์ ๋ฉ์ถฐ๋ฒ๋ฆผ.. ์ด๋๊ฐ ๋ฌธ์ ์ง ์์ ๋ชจ๋ฅด๊ฒ๋ค ์ด๊ฑฐ...
์ ์ ๋๋ฉ์ด์ ๋์ ํฌ๊ฒ ๊ฑฐ์ฌ๋ฆฌ๋ ์ ๋๋ ์๋๊ฑฐ๊ฐ์๋ฐ ๊ทธ๋ฅ ์ด์ํ๋ก ํํํ ๊น ใ ใ ..ใ ใ ใ ใ ใ ใ
๊ทธ๋ผ ์ ๋๋ฉ์ดํฐ์์ ์๋ ์ผ๋ง๋ก ๋์๋์ง ๋ด๋ฐ ์ ์์ ํฝ์ค๋๋ ๋ค ์์ด์ง?
Cogito / ์ ํ ์ ๋๋ฉ์ด์ ํ๋ ์์ด 2๊ฐ๋ฟ์ด๋ผ ์๋๋ 2ํ๋ ์์ผ๋ก ํด๋์; ๊ทธ๋์ผ ์ฌ์ํ์ ๋ ํ์ด๋ฐ์ด ๋ฑ ๋ง๋๋ผ๊ณ . ๊ทธ๋ฆฌ๊ณ ํฝ์ค๋๋ ์ฝ๋ผ์ด๋ ๊ด๋ จ๋๊ฑฐ ๋งํ๋๊ฑฐ์ง? ๋ค ์์ด์
์ ๋๋ฉ์ดํฐ์์ ์๋1์ ํ๋ ์์ ๋งํ๋๊ฒ ์๋๋ผ ์ ์ 1๋ฐฐ๋ฅผ ๋งํ๋๊ฑฐ์
Cogito / ์ ๊ทธ ์ ๋๋ฉ์ดํฐ ์๋๋ 1๋ก ๋์์ ๋๋ ์ ๋๋ฉ์ด์ ํญ ๋งํ๋์ค
์ฒซ ๋ฒ์งธ ์ ํ์์๋ jump ๋ณ์(bool)๊ฐ false๊ณ ๋ ๋ฒ ์ ํํด์ผ true๊ฐ ๋๋๋ฐ ๊ทธ ์ด์ ๊ฐ ๋จธ์ง