using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerMovement : MonoBehaviour
{
ย ย private Vector2 inputVec;
ย ย public float speed;
ย ย private bool isGround = true;
ย ย float playerRadius = 0.6f;
ย ย [SerializeField] private LayerMask islayer;
ย ย Rigidbody2D rigid;
ย ย void Start()
ย ย {
ย ย ย ย rigid = GetComponent<Rigidbody2D>();
ย ย }
ย ย void Update()
ย ย {
ย ย ย ย isGround = Physics2D.OverlapCircle(rigid.position, playerRadius, islayer);
ย ย ย ย inputVec.x = Input.GetAxis("Horizontal");
ย ย ย ย Jump();
ย ย }
ย ย private void FixedUpdate()
ย ย {
ย ย ย ย Vector2 newVec = inputVec * speed * Time.fixedDeltaTime;
ย ย ย ย rigid.MovePosition(rigid.position + newVec);
ย ย }
ย ย void Jump()
ย ย {
ย ย ย ย if (isGround == true)
ย ย ย ย {
ย ย ย ย inputVec.y = Input.GetAxis("Jump");
ย ย ย ย }
ย ย }
}
์ด๋ ๊ฒ ์ฝ๋ ์งฐ๋๋ ์ ํ ํ๋ฒํ๋ฉด ๊ณ์ ๋ ๋ผ๊ฐ.. ์์ด๋ฌ๋์ง ์๋ ค์ค ใ ใ
ํด๋น ๋๊ธ์ ์ญ์ ๋์์ต๋๋ค.
์์ธํ๊ฒ ์๋ ค์ค ์ ์์ด? ๊ณต๋ถํ๋ ์ค์ด๋ผ ใ
๊ณ์ ๋ ์๊ฐ๋ค๋ฉด UPDATE์์ ๊ณ์์คํ์ด ๋๋๊น ๋ ์๊ฐ๋ค๊ณ ๋ด์ผ์ง. ๋ณด๋ฉด ์ ํ๊ฐ ๊ณ์ ์ ๋ฐ์ดํธ ์์ ์คํ๋๊ณ ์์๋
์ด๋ด๋ if ๋ฅผ ์จ์ if (Input.GetKeyDown(KeyCode.Space) && isGround) { Jump(); } ์ด๋ ๊ฒ ํด์ผ์ง
๊ทธ๋ฆฌ๊ณ Jump ๋ฉ์๋ ์์๋ ๋ง์ง๋ง์ค์ isGround = false; ๋ฅผ ์จ์ ์ด์ค์ ํ๋ฅผ ๋ง์ผ์ . ๊ทธ๋ฆฌ๊ณ bool isGround๋ฅผ true ๋ฐ๊ฟ์ฃผ๋ ๊ฒ ์๋ฅผ ๋ค๋ฉด ์ฝ๋ผ์ด๋ ํ๊ทธ๊ฐ Ground๋ฉด = true์ด๋ ๊ฒ ํ๊ณ
๋ด๊ฐ ์๊ฐํ๋๊ฑฐ๋ ์ ํํ๋ฉด Physics2D.OverlapCircle๊ฐ false ๋ฑ์ด๋ด๋ฉด์ ์ ํ ํจ์ ์์ ์๋ ์กฐ๊ฑด๋ฌธ์ด ์ข ๋ฃ๋๋ ๊ฑฐ์๋๋ฐ ์ด ์ฝ๋๋ ์ด๋ ๊ฒ ๋์ ์ํด?
update๋ input ๋ฌธ์ ์๋๊ณ inputVec.y๋ฅผ ํ ๋ฒ ์ ๋ ฅ๋ฐ๊ณ ๋์ inputVec์ ๋ค์ -1์ด๋ 0์ผ๋ก ํด์ฃผ๋ ๊ณผ์ ์ด ์์ด์๊ทธ๋ผ
Input.GetAxis๊ฐ ์ด๋ฏธ if๋ GetKeyDown ํฌํจ๋๊ฑฐ์
์กฐ๊ฑด๋ฌธ์ isGround๊ฐ false์ฌ๋ ์์์ ์ข ๋ฃ๋จ ๊ทธ๋ฆฌ๊ณ ์ง๊ธ ์ ํ๋ง ํ๊ณ ์ค๋ ฅ ๋ฑ์ผ๋ก ๋จ์ด์ง๋ ๋ถ๋ถ ์ฒ๋ฆฌ๊ฐ ์๋๋ฏ
๊ทผ๋ฐ ์ ํํจ์ ์์ ๋ฐ๋ก inputVec.y๋ฅผ 0 ์ฃผ๋ฉด ์ ํ ์์ฒด๊ฐ ์๋๋๋ฐ sleep๊ฐ์ ๊ฑฐ ์จ์ผ๋จ???
Rigidbody๋ ๋ฃ์ด๋จ๋๋ฐ ์์ด๋ฌ์ง
isGround = Physics2D.OverlapCircle(rigid.position, playerRadius, islayer); ์ด๊ฒ ์ข ๋ชจํธํ๋ค๊ณ ๋ณด๋๋ฐ ์ด๊ฒ๋ if ๋ก ๋ฐ๊ฟ์ ํด๋ด
if ๋ก ์ ํํ๊ฒ ์กฐ๊ฑด์ ์ค์ ๊ฒน์น๋ฉด isGround = true; ๋ฅผ ๋ฑ์ด๋ด๊ฒ ํ๋ฉด ๊ณ ์ณ์ง๋ฏ.
๊ทธ๋ฆฌ๊ณ ๋ณดํต์ ์ ๋ํฐ์์ ์ ๊ณตํ๋ void OnCollisionEnter2D(Collision2D collision) ๋ฅผ ์ฐ๋๊ฒ ์ผ๋ฐ์ ์.