public class BulletSpawner : MonoBehaviour
{
ย ย public GameObject bulletPrefab;
ย ย public float spawnRateMin = 0.5f;
ย ย public float spawnRateMax = 3f;
ย ย public GameObject enimy;
ย ย private Transform target;
ย ย private float spawnRate;
ย ย private float timeAfterSpawn;
ย ย void Start()
ย ย {
ย ย ย ย timeAfterSpawn = 0f;
ย ย ย ย spawnRate = Random.Range(spawnRateMin, spawnRateMax);
ย ย ย ย target = FindObjectOfType<PlayerController>().transform;
ย ย }
ย ย // Update is called once per frame
ย ย void Update()
ย ย {
ย ย ย ย timeAfterSpawn += Time.deltaTime;
ย ย ย ย if (timeAfterSpawn >= spawnRate)
ย ย ย ย {
ย ย ย ย ย ย timeAfterSpawn = 0f;
ย ย ย ย ย ย GameObject bullet
ย ย ย ย ย ย ย ย = Instantiate(bulletPrefab, transform.position, transform.rotation);
ย ย ย ย ย ย bullet.transform.LookAt(target);
ย ย ย ย ย ย spawnRate = Random.Range(spawnRateMin, spawnRateMax);
ย ย ย ย }
ย ย ย ย enimy.transform.LookAt(target);
ย ย }
}
๊ฐ์ offset์ +ํด์ target์ position.y๊ฐ์ ์ฌ๋ฆฌ์๋๊ฐ +Collider.height/2 ๋ฅผ ํตํด ์ค์์์ค๋๋ก ํด๋ณด์ธ์
๊ฐ์ offset์ +ํด์ target์ position.y๊ฐ์ ์ฌ๋ฆฌ์๋๊ฐ +Collider.height/2 ๋ฅผ ํตํด ์ค์์์ค๋๋ก ํด๋ณด๋ผ๋๊ฒ ์ด๋๋ค๊ฐ ์ถ๊ฐํด์ผ ๋๋์ง..ใ
์ด๋ฐ๊ฑฐ์ ๋งํ์๋ฉด lookat๋ง๊ณ ๋ค๋ฅธ ์ฝ๋ ์ฐ์ค์ ์์ผ์คํ ๋ฐ ๊ทธ๋ฅ ๋ฐ๋ผ๋ณด๋ ๊ณณ์ Player ์์ Sub๋ก GameObject ํ๋ ์์ฑํ์๊ณ ์๋ก ์ฌ๋ฆฐ๋ด์ PlayerController์ public Transform lookPoint; ํ๋ ์ถ๊ฐํ๋ด์ ๊ฑฐ๊ธฐ๋ค ๋์ด์ LookAt(target.lookPoint)๋ฅผ ๋ณด๋๋ก ํ์ธ์
target = FindObjectOfType().transform; ์ด๊ฒ ์บ๋ฆญํฐ์ ๋ถ๋ชจ ์ค๋ธ์ ํธ์ ์๊ณ ๋์ด๊ฐ 0 (๋ค๋ฆฌ์์น?) ์ธ๊ฑด ์๋๊ฐ์?
๋ด์ผ ๋ค์ํจ ํด๋ด์ผ๊ฒ ๋ค์ ๊ฐ์ฌํฉ๋๋ค