viewimage.php?id=2abcdd23dad63db0&no=29bcc427b38b77a16fb3dab004c86b6f113d37b1bcb96f74556c07cc6c418d68a4153145e803cd8a4f1f4c4e647b282a3bb3c9d412bacd6af8a51107618d


์šฐ์„  ๋™๊ทธ๋ผ๋ฏธ๊ฐ€ ์ฒดํฌํฌ์ธํŠธ๊ณ  ์„ธ๋ชจ๊ฐ€ ๋‚ด๊ฐ€ ์ฃฝ์€ ์ง€์  ์ด์•ผ.


์šฐ์„  1๋ฒˆ์€ ์ง€๊ธˆ ๊ฐ€๋ ค์„œ ์•ˆ๋ณด์ด๋Š”๋ฐ ์‹œ์ž‘์ ์— ์‹œ์ž‘ํ•˜์ž๋งˆ์ž ๊ทธ๋ƒฅ ์ž๋™ ํŠธ๋ฃจ๊ฐ’ ๋˜์žˆ๋Š” ์ฒดํฌํฌ์ธํŠธ๊ฐ€ ์žˆ์–ด


void OnTriggerEnter2D(Collider2D collider)

ย  ย  {

ย  ย  ย  ย  if (collider.tag == "Player")

ย  ย  ย  ย  {

ย  ย  ย  ย  ย  ย  GameObject trigger = GetNearestActiveCheckpoint();

ย  ย  ย  ย  ย  ย  if (trigger != null)

ย  ย  ย  ย  ย  ย  {

ย  ย  ย  ย  ย  ย  ย  ย  collider.transform.position = trigger.transform.position;

ย  ย  ย  ย  ย  ย  }

ย  ย  ย  ย  }

ย  ย  ย  ย  else

ย  ย  ย  ย  {

ย  ย  ย  ย  ย  ย  Destroy(collider.gameObject);

ย  ย  ย  ย  }

ย  ย  }


ย  ย  GameObject GetNearestActiveCheckpoint()

ย  ย  {

ย  ย  ย  ย  GameObject[] checkpoints = GameObject.FindGameObjectsWithTag("CheckPoint");

ย  ย  ย  ย  GameObject nearestCheckpoint = null;

ย  ย  ย  ย  float shortestDistance = Mathf.Infinity;


ย  ย  ย  ย  foreach (GameObject checkpoint in checkpoints)

ย  ย  ย  ย  {

ย  ย  ย  ย  ย  ย  Vector3 checkpointPosition = checkpoint.transform.position;

ย  ย  ย  ย  ย  ย  float distance = (checkpointPosition - transform.position).sqrMagnitude;


ย  ย  ย  ย  ย  ย  CheckpointTrigger trigger = checkpoint.GetComponent<CheckpointTrigger>();


ย  ย  ย  ย  ย  ย  if (distance < shortestDistance && trigger.isTriggered == true)

ย  ย  ย  ย  ย  ย  {

ย  ย  ย  ย  ย  ย  ย  ย  nearestCheckpoint = checkpoint;

ย  ย  ย  ย  ย  ย  ย  ย  shortestDistance = distance;

ย  ย  ย  ย  ย  ย  }

ย  ย  ย  ย  }

ย  ย  ย  ย  return nearestCheckpoint;

ย  ย  }

}


์ฝ”๋“œ๋Š” ์ด๋Ÿฐ์‹์œผ๋กœ ํ•ด์„œ ๋‚ด ์ฃฝ์€ ์ง€์ ๊ณผ ์ฒดํฌํฌ์ธํŠธ ๊ฑฐ๋ฆฌ ๊ณ„์‚ฐํ•ด์„œ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด๊ณณ์œผ๋กœ ์ด๋™๋˜๊ฒŒ ํ–ˆ์Œ.

๊ทธ๋Ÿฐ๋ฐ ์ด๊ฒŒ ๋ฌธ์ œ๊ฐ€ ๋ญ๋ƒ๋ฉด ย 3๋ฒˆ ์ฒดํฌ ํฌ์ธํŠธ๋ฅผ ๋ฐŸ์•˜์„๊ฒฝ์šฐ ์ €๊ฒŒ ๊ฐ€์žฅ ์ตœ์‹  ์ธ๋ฐ. ๊ฑฐ๋ฆฌ๊ฐ€ ๊ฐ€๊นŒ์šด๊ฑธ๋กœ ์ด๋™๋˜๋‹ˆ 1๋ฒˆ ์ง€์ ์—์„œ ์ฃฝ์„๊ฒฝ์šฐ 3๋ฒˆ์ด์•„๋‹ˆ๋ผ 2๋ฒˆ ์ฒดํฌ ํฌ์ธํŠธ๋กœ ์ด๋™ํ•จ..
๊ทธ๋ฆฌ๊ณ  2๋ฒˆ ์ง€์ ์—์„œ ์ฃฝ์œผ๋ฉด 1๋ฒˆ ์ฒดํฌ ํฌ์ธํŠธ๋กœ ์ด๋™๋˜๊ณ .. ( ์ €์Šคํฌ๋ฆฝํŠธ๋Š” ์žฅ์• ๋ฌผ์— ๋“ค์–ด๊ฐ€์žˆ๋Š” ์Šคํฌ๋ฆฝํŠธ ๊ทธ๋ฆฌ๊ณ  ์ฒดํฌํฌ์ธํŠธ์— ๋ฐŸ์œผ๋ฉด isTriggered๊ฐ€ ํŠธ๋ฃจ๋กœ ๋˜๋Š” ์Šคํฌ๋ฆฝํŠธ๊ฐ€์žˆ์–ด)
๊ทธ๋ž˜์„œ ์ € ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์†๋ณด๋ ค๋‹ค ๊ทธ๋ƒฅ ์ฒดํฌํฌ์ธํŠธ ์Šคํฌ๋ฆฝํŠธ์—์„œ ๋ฐŸ์„๋–„๋งˆ๋‹ค ์ „์—๊บผ ํŽ„์Šคํ•ด์ฃผ๋Š”๊ฒŒ ๋‚ซ์„๊ฑฐ๊ฐ™์•„์„œ ๊ทธ๋Ÿฐ ์งˆ๋ฌธ ์˜ฌ๋ฆฐ๊ฑฐ๊ณ ..

๋ฌด์Šจ ์†Œ๋ฆฌ์ธ์ง€ ์ดํ•ด๊ฐ€ ๋˜๋ ค๋‚˜.. ์„ค๋ช…์ด ๊ฐœํŒ์ด๋ผ.