๊ฐค ํ๋๋ค์ ๋ต๋ณ์ ์ป์ด ํฌ์ฌ์ฒด ์ด๋๊ฐ์ ์ ๋๋ฉ์ด์ ์ฌ์๋๊ณ Destroy๋๋๊ฒ์ด๋ ๊ทธ๋ฐ๊ฒ๋ค์ ๋ค ํด๊ฒฐ์ ํ์ต๋๋ค๋ง
์คํ๋ผ์ดํธ ๋ฐ์ ์ด ๋ฌธ์ ์ ๋๋ค.
์๋ฅผ๋ค์ด
P(ํ๋ ์ด์ด)ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย E(์ )
์ด๋ผ๋ฉด
ํ๋ ์ด์ด๊ฐ ์ ํํ ํ๋๊ถ์ 3๋ฒ ์ฐ์ ๋ ๋ฆฐ๋ค.
P >>>ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย E
์ ๋ ์๊ฐ๋๋ค ๊ทธ๋ฐ๋ฐ ๊ฐ์๊ธฐ ๋ฐฉํฅ์ด ๋ฐ๋๋ฉด
Eย ย ย ย ย ย <<ย ย ย P >
์ด๋ ๊ฒ ๋ ์๊ฐ๋๋ค;;; ๊ผญ ํ์ชฝ์ด ๋ฐฉํฅ์ด ์๋ฐ๋์ด ๋ ์๊ฐ๋ค ๊ทธ ๋ค์๊ฑด ์์ ๋์ด ์๋ ์๊ฐ๋๋ค;
Projectile ์คํฌ๋ฆฝํธ๋ ์ด๋ ๊ฒ ์์ ํ์ต๋๋ค.
public class Projectile : MonoBehaviour
{
ย ย Animator anim;
ย ย SpriteRenderer spriteRenderer;
ย ย [SerializeField] float speed;
ย ย [SerializeField] float range;
ย ย [SerializeField] bool isMoving;
ย ย private void Start()
ย ย {
ย ย ย ย anim = GetComponent<Animator>();
ย ย ย ย spriteRenderer = GetComponent<SpriteRenderer>();
ย ย }
ย ย private void Update()
ย ย {
ย ย ย ย if (isMoving)
ย ย ย ย ย ย Movement();
ย ย ย ย if (anim.GetCurrentAnimatorStateInfo(0).normalizedTime >= 1.0f)
ย ย ย ย ย ย Destroy(gameObject);
ย ย }
ย ย public void Movement()
ย ย {
ย ย ย ย Vector3 attackDir = transform.right * transform.localScale.x;
ย ย ย ย float projectileDir = transform.localScale.x > 0 ? -1f : 1f;
ย ย ย ย transform.position = Vector3.Lerp(transform.position, transform.position + attackDir + new Vector3(range * projectileDir, 0, 0), Time.deltaTime * speed);
ย ย }
}
ํ๋ ์ด์ด๊ฐ ๊ธฐ์ ์ฌ์ฉํ ๋๋
// ์คํฌ์จ์ด๋ธ
if (Input.GetKeyDown(KeyCode.Alpha5))
{
ย ย attackDir = transform.right * transform.localScale.x;
ย ย // ํฌ์ฌ์ฒด ์ด๋
ย ย Instantiate(sharkWavePrefab, sharkMuzzle.position + attackDir, Quaternion.identity);
ย ย // ํฌ์ฌ์ฒด ๋ฐ์
ย ย projectileDir = transform.localScale.x > 0 ? -1f : 1f;
ย ย sharkWavePrefab.transform.localScale = new Vector3(projectileDir, 1f, 1f);
}
์ด๋ ๊ฒ ๋ฐ๊ฟจ์ต๋๋ค.
์ ๋๋ฉ์ด์ ์ ํฌ์ฌ์ฒด์ ์ด๋๊ณผ ๋กํ ์ด์ ๊น์ง ๋ฃ์ด์ ๊ทธ๋ผ
ํฌ์ฌ์ฒด ์ ๋๋ฉ์ด์ ์ ์ฌ์์ ์์น๊ฐ์ด๋ ์ฐ๊ด ๋์ด์๋์ง ํ์ธํด๋ณด์
์ ๋๋ฉ์ด์ ์๋ ๋ฑํ ์ด๋ฒคํธ๋ฅผ ๋ฃ์ง์์์ต๋๋ค.
์๋ช ์ฃผ๊ธฐ ๋ฌธ์ ๊ฐ์๋ฐ ์ค์ผ์ผ ๋ฐ์ ์ ํ๋๊ถ ์ฐ๊ธฐ์ ์ ์ฒดํฌํ๊ณ ๋ฉค๋ฒ๋ก ์ ์ฅํ๋ค์ ํฌ์ฌ์ฒด ์์ฑํด๋ณด๋๊ฑด? ์๋๋ฉด ์ค๋ธ์ ํธํ๋ง์ผ๋ก ์ด๋ฒคํธ ๋๋ฆฌ๋ธํ๋ ์ง
๊ฐ์ฌํฉ๋๋ค ํด๊ฒฐํ์ต๋๋ค. ๊ทธ๋ฅ Projectile projectile = Instantiate(sharkWavePrefab, sharkMuzzle.position + attackDir, Quaternion.identity); ํ๊ณ projectile.transform.localScale = new Vector3(projectileDir, 1f, 1f); ํ๋๊น ์๋ฉ๋๋ค. ๊ฐ์ฌํฉ๋๋ค.
ํ๋๋ง ์ฌ์ญค๋ด๋ ๋ ๊น์? Ismoving ์ด๋ผ๋ bool ๊ฐ์ด true์ธ ์ํ๋ก update์์ ์ฌ๋ฌ๋ฒ ํธ์ถ๋๊ณ ์๋ ํํ ๊ฐ์์. Serialized field๋ก ๋์ ๊ฑฐ ๋ณด๋ฉด inspector์ฐฝ์์ ์ง์ ํ ๋นํด์ฃผ์ ๊ฑฐ ๊ฐ์๋ฐ ์ด boolean ๊ฐ์ด ๋ฐ๋๋ ํ์ด๋ฐ์ ๋ํด์ ์๋ ค์ฃผ์ค ์ ์๋์?
์ ์๋ฆฌ์์ ์ฌ๋ผ์ง๋ ํฌ์ฌ์ฒด๋ false๋ก ๋๊ณ ์์ง์ด๋ฉด์ ์ฌ๋ผ์ง๋ ํฌ์ฌ์ฒด๋ true๋ก ๋์ต๋๋ค.