์ ๊ฐ ์๊ฐํ๊ฑด 1๋ฒ ํ๊ธฐ๊ณ 0.5์ดํ ๋ค์ํ๋ฒ ํ๊ธฐ๊ณ ๊ทธ๋ฐ์์ ๋๋ฐฑ์ ์๊ฐํ๋๋ฐ Enter๋ก ํ๋ 1๋ฒ๋ง ํ๊ธฐ๋ค ์ค๋ธ์ ํธ ์์ ์์ผ๋ฉด ์ํ๊ธฐ๊ณ
๋ฐ๋๋ก Stay๋ก ํ๋๊น ๊ณ์ ์ถฉ๋์ฒ๋ฆฌ๋ฐ์์ ๋ฌธ์ ๊ณ ์
๋ก์ง์ ์ด๋ ์ต๋๋ค.
trap tile๊ณผ ์ถฉ๋์ playerย ์คํฌ๋ฆฝํธ๋ฅผ falseํ๋ ๋ฐฉ์์ผ๋ก ๋๋ฐฑํ 0.5์ด๋์ ์์ง์ด์ง ๋ชปํ๊ฒ ํ๊ณ ์์ต๋๋ค.
ํ ๊ฒจ์ง๋ ์ฝ๋ ์ด๋จ๋์ง๋ ๋ชจ๋ฅด๊ฒ ๋๋ฐ
์ํฐ์์ ๋ถ๋ชํ์ ์ฝ๋ฃจํด์ผ๋ก ํ ๊ธด๋ค๋ฉด ์ฝ๋ฃจํด ๋ฃจํ 0.5์ด๋ง๋ค ๋๋ฆฌ๊ณ Exit์์ ์์ธ์ฒ๋ฆฌ ํ๋ฉด ๋ ๋ฏ
void Update() { //ํ๋ ์ด์ด ์ข์ฐ ๋๋ฐฑ ๊ณ์ฐ currentValue = target.transform.position.x; if (currentValue > prevValue) isInDecreasing = true; else isInDecreasing = false; prevValue = currentValue; }
void OnTriggerEnter2D(Collider2D collision) { if (isInDecreasing == true) playerRb.velocity = new Vector2(-knockbackForce, 0); else if (isInDecreasing == false) playerRb.velocity = new Vector2(knockbackForce, 0);
์คํฌ๋ฆฐ์ท์ ์๋ ๋ก์ง์ ์ ์ธํ ๋ถ๋ถ์ ๋๋ค
//ํ๋ ์ด์ด object private GameObject target; //ํ๋ ์ด์ด rigidbody ํธ์ถ private Rigidbody2D playerRb; //ํ๋ ์ด์ด ์ขํ๊ณ์ฐ(๋๋ฐฑ ๋ฐฉํฅ ์กฐ์ ) private bool isInDecreasing = false; float prevValue = 0f; float currentValue = 0f; //ํ๋ ์ด์ด ๋๋ฐฑํ ์์ง์์ปจํธ๋กค PlayerController playerController; bool isDelay = false; float delayTime = 0.5f; //๋๋ฐฑ ํ public float knockbackForce = 10
//๋ฌด์ bool invincible = false; void Start() { target = GameObject.Find("player"); playerRb = target.GetComponent(); }
stay๋ก ํด์ผ๋ ๊ฑฐ์์ ๋ฌด์ ์๊ฐ๋์์ ์ถฉ๋์ด ๋ฐ์์ง์ง์๋๋ก ๋ฐ๋ก ์ค์ ํ์ ์ผ ํ ๊ฑฐ์์ if(collision.gameObject.tag == "Player" && isDelay == false ์๋๋ฉด playerController.enable == true) ๋ก ์กฐ๊ฑด๋ฌธ์ ๊ณ ์น๋ฉด ๋ ๊ฑฐ๊ธด ํ๋ฐ playerDamaged๋ผ๋ bool๊ฐ์ ๋ฐ๋ก ๋ง๋์๋๊ฒ ์ข์๊ฑฐ๊ฐ์์ ์๋๋ฉดใ ใ - dc App