[SerializeField] private float moveSpeed;
[SerializeField] private float radius;
private float minDistance = 0.2f;
private Vector2 enemyPosition;
private Vector2 position;
private Vector2 direction;
private Vector2 nextPosition;
private const string ENEMY_LAYER = "Enemy";
protected override void FixedUpdate()
{
base.FixedUpdate();
var enemyColliders = Physics2D.OverlapCircleAll(transform.position, radius,
1 << LayerMask.NameToLayer(ENEMY_LAYER));
foreach (var enemyCollider in enemyColliders)
{
if (!enemyCollider)
{
continue;
}
enemyPosition = enemyCollider.transform.position;
position = transform.position;
if (minDistance > Vector2.Distance(enemyPosition, position))
{
continue;
}
//float speedMagnitude = Time.fixedDeltaTime * moveSpeed;
direction = position - enemyPosition;
//direction.Normalize();
nextPosition = enemyPosition + direction;// * speedMagnitude;
enemyCollider.transform.position = nextPosition;
}
}
์ ๋ค์ ์คํฌ ๊ฐ์ด๋ฐ๋ก ๋ชจ์์ค๋ ์ฝ๋์ธ๋ฐ
์ฃผ์๋ถ๋ถ์ ์ฃผ์ ํด์ ํ๋ฉด ์ ๊ฐ์ฒด 30๋ง๋ฆฌ์ผ๋ย ๋ถ ๋น 1MB์ฉ ๋ฉ๋ชจ๋ฆฌ ๋์๋จ
์๊ทธ๋ฌ๋์ง ์๋์ฌ๋ ์์ด?
๋ณ์ ์ ์ธ๋๋๊ฒ float ์ ๊ฑฐ ๋ฐ์ ์๋๋ฐ ์ ๊ฑฐ ๋ฌธ์ ๊ฒ ์ง๋จธ
๋ณ์ ์ ์ธ ๋ง๊ณ ๋ค์ ์ ๊ทธ๋๋ก ๋๋ ค๋ฃ์ด๋ณด์ ใ ใ ;
๊ทธ๊ฑฐ๋ ์ด๋ฏธ ํด๋ด
https://docs.unity3d.com/ScriptReference/Physics2D.OverlapCircleAll.html
์๋ Physics2D ์ข ๋ฅ๊ฐ ๋ฌด๊ฑฐ์ฐ๋๊น ์ฃผ์ํด์ ์จ์ผํจ,
๋ฐฉ๊ธ ์ฌ์ฉํด๋ณด์์ผ๋..... ๋์๋ ๊ณ์๋๋ค.. ์ ์ ๋๊ฐ๊ฒ๊ฐ๋ค.. ใ ใ
๋ฌด๊ฒ๋ค๋๊ฒ ๋จผ์๋ง๋ฏธ?
OverlapCircleNonAlloc ์ผ๋ก ์ฐ์
๊ทธ๋ฆฌ๊ณ ์ต์ ํ ๋จ๊ณ๋ฉด ํด๋์ค๋ง๋ค string์ผ๋ก ์ ์ฅํ์ง๋ง๊ณ LayerMask๋ฅผ ๋ด์๋๋ ํด๋์ค๋ฅผ ๋ฐ๋ก ๋ง๋ค์ด์ ๊ทธ์ชฝ์์ ์ฐธ์กฐํ๋๋ก ๋ฐ๊พธ์
๋กํ..
๋ฐฐ์ด ๋ฐํํ๋๊ฑด ์กฐ์ฌํด์ ์จ์ผ ๋จ
๋ฐฐ์ด ๋๋ฌธ์ด ์๋.. ์ ์ฃผ์์ฒ๋ฆฌ ํด๋์ผ๋ฉด ๋์ ์๋จ
fixedDeltaTime์์ ๋์๋๋ค๋๊ฑฐ?
vector2 ๋ง๊ณ vector3.Distance์ฌ์ฉํด๋ด