๊ฐ•์˜๋ฅผ ๋ณด๋˜์ค‘์— static์„ ์‚ฌ์šฉํ•ด์„œ ํ”Œ๋ ˆ์ด์–ด์™€ ์ ์‚ฌ์ด์— ๊ฑฐ๋ฆฌ๋ฅผ ๊ณ„์‚ฐํ•ด์„œ ์ผ์ •๊ฑฐ๋ฆฌ ์•ˆ์— ๋“ค์–ด์˜ฌ์‹œ ๋”ฐ๋ผ๊ฐ€๋Š” ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋งŒ๋“ค๋”๊ตฐ์š”

์ œ๊ฐ€ ์•Œ๊ธฐ๋กœ๋Š” static์„ ์ด์šฉํ•˜๋ฉด ์ •์ ์œผ๋กœ ๋˜์„œ ๋ชจ๋“ ์Šคํฌ๋ฆฝํŠธ์—์„œ ์ด static์œผ๋กœ ์„ ์–ธ๋œ๊ฑด ๊ทธ ํด๋ž˜์Šค์— ์†Œ์†๋˜๋„๋ก ์ง€์ •ํ•˜๋Š” ํ•œ์ •์ž๋ผ๊ณ  ํ•˜๋”๊ตฐ์š”


๊ทธ๋Ÿฐ๋ฐ ์ œ๊ฐ€ ๋”ฑ ๊ทธ์ •๋„๋ฐ–์— ๋ชฐ๋ผ์„œ ๊ทธ๋Ÿฐ๋ฐ ์™œ์ด๋ ‡๊ฒŒ ์ฝ”๋“œ๋ฅผ ์งฐ๋Š”์ง€ ์ข€ ์ž์„ธํžˆ ์•Œ๋ ค์ฃผ์‹ค๋ถ„์žˆ์œผ์‹ ๊ฐ€์š”?

์ œ๊ฐ€ ๊ถ๊ธˆํ•œ๋ถ€๋ถ„์˜ ์ฝ”๋“œ๋งŒ ๋ฝ‘์•˜์Šต๋‹ˆ๋‹ค

ํ”Œ๋ ˆ์ด์–ด ์Šคํฌ๋ฆฝํŠธ์—์„œ


ย public static PlayerController instance;


private void Awake()
ย  ย  {
ย  ย  ย  ย  instance = this;
ย  ย  }

์  ์Šคํฌ๋ฆฝํŠธ


using System.Collections;

using System.Collections.Generic;

using UnityEngine;


public class EnemyController : MonoBehaviour

{

ย  ย  public Rigidbody2D theRD;

ย  ย  public float movespeed;


ย  ย  public float rangeToChasePlayer;

ย  ย  private Vector3 moveDirection;



ย  ย  // Start is called before the first frame update

ย  ย  void Start()

ย  ย  {

ย  ย  ย  ย ย 

ย  ย  }


ย  ย  // Update is called once per frame

ย  ย  void Update()

ย  ย  {

ย  ย  ย  ย  if (Vector3.Distance(transform.position, PlayerController.instance.transform.position)

ย  ย  ย  ย  {

ย  ย  ย  ย  ย  ย  moveDirection = PlayerController.instance.transform.position - transform.position;

ย  ย  ย  ย  }

ย  ย  ย  ย  else

ย  ย  ย  ย  {

ย  ย  ย  ย  ย  ย  moveDirection = Vector3.zero;

ย  ย  ย  ย  }


ย  ย  ย  ย  moveDirection.Normalize();


ย  ย  ย  ย  theRD.velocity = moveDirection * movespeed;

ย  ย  }

}

์ด๋ ‡๊ฒŒ ๋˜์žˆ๋Š”๋ฐ ์™œ ํ”Œ๋ ˆ์ด์–ด ์Šคํฌ๋ฆฝํŠธ์—์„œย 
awake()ํ•จ์ˆ˜์—์„œย 
instance์— this๋ฅผ ๋„ฃ๋Š”์ง€๋ฅผ ์ž˜๋ชจ๋ฅด๊ฒ ์–ด์š” ใ… ใ… ใ…  ๋„์™€์ฃผ์„ธ์š”!!