์ด๋ฐ์์ผ๋ก ์๋ฌ๋๋๋ฐ..์ด์ ๊ฐ ๋ญ์ฃ ?ใ ใ
public void launchBullet()
{
// ํ๋ ์ด์ด ์ค๋ธ์ ํธ์ localScale์ ํ๋ ์ด์ด๊ฐ ์ด๋ ๋ฐฉํฅ์ ๋ฐ๋ผ๋ณด๋์ง ์๋ ค์ค๋ค.
// ํ๋ ์ด์ด๊ฐ ๋ฐ๋ผ๋ณด๋ ๋ฐฉํฅ์ ๋ณ๋์ ๋ณ์๋ก ๋ง๋๋ ๋์ ์ด๋ฏธ ์๊ณ ์๋ ์ ๋ณด๋ก ํ์ธํ๋ค.
float mainXScale = playerObject.transform.localScale.x;
Vector2 bulletForce;
if (mainXScale
{
// ์ผ์ชฝ์ผ๋ก ์ด์ ๋ฐ์ฌ
bulletForce = new Vector2(bulletSpeed * -1.0f, 0.0f);
}
else
{
// ์ค๋ฅธ์ชฝ์ผ๋ก ์ด์ ๋ฐ์ฌ
bulletForce = new Vector2(bulletSpeed, 0.0f);
}
rigidbody2D.velocity = bulletForce;
selfDestructTimer = Time.time + 1.0f;
}
๋ น์ ๋ฐ์ค ๊ทธ์ด์ง๋ฐ ๋ง์ฐ์ค ๊ฐ๋ค๋๋ฉด ๋ญ๋ผ๊ณ ๋ธ?
์์ ํ์ด์ฌ ๋งจ๋ง์ง ์ฌ์ง์ผ๋ก ๋์์
bulletForce ์ ๊ฐ ์ ๋๋ก ๋ฃ์์?
๊ฐ์ ์ ๋๋ก ๋ฃ์๋๋๊ฒ ๋ฌด์จ ๋ง์์ด์ ๊ฐ์?
์ ์๋ง์ ์์ค ๋ณต์ฌํด์ ์ฌ๋ ค๋๋ฆด๊ฒ์
ํ๋ ๋ณธ๋ฌธ์ ์์ค ์ฌ๋ ธ์ต๋๋ค.
์์ผ๋ก ์ด์์ด ๋๊ฐ์ผํ๋๋ฐ ์ ์๋ฆฌ์์๋ง ์ด์์ด ์๊น๋๋คใ ใ
๋ น์์ค์ ์๋ฌ๊ฐ ์๋ ์ ์ธ๋งํด๋๊ณ ํด๋น ๋ณ์๋ฅผ ์์จ์ ๊ทธ๋ฐ๊ฑฐ๊ณ startํจ์๋ด์์๋ rigidbody2d = ๋ค์ ์ ๋๋ก ์ด๊ฑฐ ํ์ธํด๋ด๋ผ GetComponent<RigidBody2D>();
ใ ใ ๋ ๋๋ฒ์งธ ์ฌ์ง๋ณด์๋ฉด ๊ทธ rigid ๋ค์ ์ด๊ฑฐ ๋์์์ต๋๋ค..
๋ณด์๋ค์ํผ ์ ๋๋ก ์ฐ์ฌ์์ด์ ..ใ ใ
ํน์ this๊ฐ ๋ฌธ์ ์ธ๊ฐ์?
this.๋ ์๊ด์์
๋๋ฒ์งธ์ฌ์ง์ด๋ ๋ง์ง๋ง์ฌ์ง์ด๋ ์ด๊ธฐํ ๊ตฌ๋ฌธ์ด ๋ค๋ฅธ๋ฐ?
ํ๋๋ playerObj ์ด์ฉ๊ณ ๋ก ์์ํ๋๊ณ ๋ง
์ ์ ๊ฑฐ ์ ๊ฐ ๋ฐ๊ฟ์ ์คํํด๋ณธ๋ค๊ณ ๊ทธ๋ฐ๊ฑฐ์์..๊ทธ๋๋ ์ค๋ฅ๋๊ธธ๋..
๊ทผ๋ฐ ์ค๋ฅ๊ตฌ๋ฌธ ๋๋ฅด๋ฉด 45๋ฒ์ค..๊ทธ๋ฌ๋๊น ์ธ๋ฒ์งธ ์ฌ์ง์ผ๋ก ๊ฐ๋๊ฑธ๋ก๋ด์ ์ ๊ฒ ๋ฌธ์ ๊ฐ์๋๊ฐ์?
๋๋ฆฌํผ๋ฐ์ค์ต์ ์ ์ธ๊ฑฐ ๋ณด๋๊น ์ด๊ธฐํ ์ ๋๋ก ๋ชปํด์ ๊ทธ๋๋ก ์ฐธ์กฐ๋ณ์๊ฐ null์ธ๊ฑฐ๊ฐ์๋ฐ ์ ๋๋ก ํ์ธํด๋ด๋ผ ์๋ ์ด์ ๊ฐ์์ด.
์๋๋ฉด ์ launchBullet ํจ์๊ฐ ๋ค๋ฅธ ์คํฌ๋ฆฝํธ์์ ์ฐธ์กฐ๋์ ํธ์ถ๋๋ ๋ฉ์๋๋ผ๋ฉด Start()๋ฉ์๋ ์ ์ ํธ์ถ๋๊ฑฐ์ผ์๋์์ผ๋๊น rigidbody = ๊ฒ์ปดํฌ๋ํธ๋ฅผ Start()๋ง๊ณ Awake()ํจ์ ์ ์ ์ด๋ด๋ผ
Awake ํจ์๋ ๋ฐ๋ก ์๋๋ฐ ๊ฑ ์๋ก ์ ์ํ๋ฉด ๋๊ฒ ์ฃ ?
๊ฒ์ปดํฌ๋ํธ๊ฐ์๊ฒฝ์ฐ๋ Awake()์ ์ ์ด๋๋๊ฒ ๋ ์์ ํจ
์๋๋ค์ ใ ํ๋ ๋ณธ๋ฌธ ๋ง์ง๋ง ํ๋ฒ ๋ด์ฃผ์ธ์ ์๋ก ์๊ฒผ๋ค์ ์ค๋ฅ๊ฐ..์๊น ๊ทธ์ค๋ฅ๋ ๋น์ทํ๊ฑด๊ฐ์?
๋ง์ง๋ง ์ค๋ฅ PlayerBulletController์ Player ์ค๋ธ์ ํธ ์ฐ๊ฒฐ์์ผฐ๋๋ฉ..
playerObject ์ ์๋ ์ด๋จ์ด์?
์ฒซ๋ฒ์งธ ์ฌ์ง ์ ค ์์ ๋ณด์๋ฉด ์ ์ธํ๊ฑฐ ์์ด์ฌ
์์ ํ์ผ๋ค์ด๋ฐ์์ ๋ณด๋๊น Start() ์์์๋ ๊ฒ์ปดํฌ๋ํธ๋ฅผ Awake()ํจ์๋ด์ ์ฐ๋๊ฒ ๋ง๊ณ Awake ํจ์์์ผ๋ฉด ๊ทธ๋ฅ ๋์๋ฌธ์ ๋๊ฐ์ด ๊ทธ๋๋ก ํจ์๋ง๋ค์ด์ ์์ ์ ์ผ๋ฉด๋จ
ํ๋ ์คํ๋์ธ์? ์์ ํ์ผ?
๊ทผ๋ฐ Awake ์ ์ํด์ ํ๋๋ฐ ์๋๋๋ฐ...
๊ทธ๋ฌ๋ฉด ์ปดํ์ผ ์๋ฌ๋ ์๊ณ (๋นจ๊ฐ์์๋ฌ) ์๋ฌด์ด์์์ด ์คํ๋๋๋ฐ ์ด์๋ฐ์ฌํ์๋ง์ ์ฌ๋ผ์ง๋๊ฑธ ๋ณผ์์์๊ฑฐ๋ค ใ ใ ์ด๋ฐ๊ฑธ ๋ ผ๋ฆฌ์ ์ค๋ฅ๋ผ๊ณ ํ๋๋ฐ ์๋ฌดํผ ๊ทธ๊ฑฐ ์ด์์ด ๋ฐ์ฌ๋์๋ง์ Player์ ์ฝ๋ผ์ด๋๋ ์ด์์ ์ฝ๋ผ์ด๋๋ ์ถฉ๋๊ฐ์ง๊ฐ์ผ์ด๋์ DestroyOnCollision์คํฌ๋ฆฝํธ์์์๋ void OnTriggerEnter2D ํจ์๋ด์ Destory ๋ฉ์๋๊ฐ ํธ์ถ์ด๋๋๊ฒ๋๋ฌธ์ ๊ทธ๋ผ
ํ๋ ์ ์คํ๋์๋์ ใ ใ ์ ๋ฐ์ข ๊ตฌ์ ํด์ฃผ์ธ์...์๋ ์๋์ง.. ํ..
OnTriggerEnter2D ์์ DestroyObject(gameObject); ์ด๋ถ๋ถ์ ์์ // ์ณ์ ์ฃผ์์ฒ๋ฆฌํด์ ์คํํด๋ด ์๋ ๊ฑฐ์
ํ๋ ๋์ด์ํด์ก์ต๋๋ค..
์์ ๋ ๋๊ฐ ๋ณด๋ด์ค ์ฃผ์์์ 2์ฑํฐ ์ด์ด์ ํด๋ด
ํ๋ ๊ทผ๋ฐ ๊ทธ ์์ ์ด๋ฉด rigidbody2D ์ ์ ์๋์ด ์์ง ์์ต๋๊น?
Awake์ ์ปดํฌ๋ํธ ์ ์ํ๊ณ Destroyใ ใ ์ ์ฃผ์์ฒ๋ฆฌใทํ๋๋ฐ ์ปจํธ๋กค ๋๋ฅด๋๊น ์ด ์บ๋ฆญํฐ๊ฐ ์๊ธฐ์์์ ๋ง๋ ์๋๊ธฐ๋๋ฐ..
๋์ด์ ํด์ค๋ง์ด์๋ ๋ ๋ฐฉ๊ธ ์์ ์ ๋ ๊ฒ ๊ณ ์น๊ณ ํด๋ณด๋ ์๋ซ์
ํ..ใ ใ ๊ทธ๋ผ ํ๋ ์ด๋ ์คํฌ๋ฆฝํธ์ ์๋ rigid๋ฅผ Awakeํจ์๋ฅผ ์ฐ์ จ๋์
์ ์์๋์์ผ๋ฉด ๋ค์ ์จ์ํด์ผ์ง
ํ๋ ๊ทผ๋ฐ ์ ๊ฒ ์ด์์ ์๋ฉธ์ํค๋ ค๊ณ ๋ง๋ ํจ์์ธ๋ฐ ์ ๊ฑธ ์์ ๋ฉด ์ด์ฐํฉ๋๊น.?
๋ถ๋ ์ปจํธ๋กค๋ฌ์ ์๋ ๊ฑฐ Start()์์์๋๊ฑฐ ๋ง๊ณ void Awake() { rigidbody = GetComponent<RigidBody2D>(); ํด์ ํด๋ด ๊ทธ๋๋ ๋นจ๊ฐ์ค๋ฅ๋จ๋ฉด 45์ค์์๋ ์ค๋ฅ๊ฐ ์์ธ์ด ์๋
๊ฒ์ปดํฌ๋ํธ ๊ทผ๋ฐํ๋ ค๋ฉด ๊ฐ์ฒด ํ์ํ์ง์๋์? this ์ฐ๋ฉด ๋๋์?
this๋ ์จ๋๋๊ณ ์์จ๋๋จ.. PlayerBulletController ์คํฌ๋ฆฝํธ๊ฐ ์ด์ prefab์ ๋ถ์ด์๋๋ฐ ์ด์ prefab์ ๋ฆฌ์ง๋๋ฐ๋ ์ปดํฌ๋ํธ๊ฐ ๋ถ์ด์์ผ๋ ๊ฒ์ปดํฌ๋ํธ<๋ฆฌ์ง๋๋ฐ๋>ํ๋ฉด ๋ถ๋ฌ์์ง์ง..
์ฝ๋๋ณด๋๊น ์์ฒด์ ์ผ๋ก Updateํจ์๋ด์ selfDestructTimer ๋ณ์ ์ฌ์ฉํด์ 1์ด์ง๋๋ฉด ์๋์ผ๋ก Destroy ํ๊ฒ ์ง๋ง๊ตฌ๋ง ๋ฐ๋ก ์ ๋ ๊ฒ ๋ง๋ค์ด๋ ผ ์ด์ ๋ ๋ชจ๋ฅด๊ฒ์ ๋ ์ฑ ๊ณผ์ ์ ์ฝ์ด๊ฐ๋๊ฒ ์๋๋ผ์ ์ด๋ค ์๋๊ฐ์๋์ง ๋ชจ๋ฅด๊ฒ๋๋ฐ
๊ทธ๋ฆฌ๊ณ ์ ์ด์ Update() ๋ง๊ณ Destroy ํ๋ฒํธ์ถํด์ ๋ช์ดํ์ ๊ฐ์ฒด์๋ฉธํด์ค์ง ์ ๋ฌํ๋ ์ธ์๊ฐ์ด์๋๋ฐ ์์ ๋ ๊ฒ ๊ตฌํํด๋์์ง๋ ์๋ฌธ..์๋ฒ์ ์ด๋ผ๊ทธ๋ฐ๊ฐ
๊ทธ๋๊น ํ๋๋ง์์ ํ์ด๋จธ๋ก 1์ด์ง๋๋ฉด ์๋์ผ๋ก ๋ถ๋ฆฟ ์๋ฉธํ๊ฒ ํด๋จ๋ค๋ ๋ง์์ด์์ฃ
์ ๋ ํ๋๋ง์ ๋ฃ๊ณ ๋ฐฉ๊ธ ์์ ์คํํด๋ณด๊ณ ์๋๋ฐ ์ด๊ฑฐ ์ด์์ด ๊ทธ๋ฅ ์๋๊ฐ๋ค์... ๋ญ ๋นจ๊ฐ์ค ์ค๋ฅ๋จ๋๋ฐ
์ฌ์ ํ ๊ฐ์ ์ค๋ฅ๋ค์...๋ญ๊ฐ๋ฌธ์ ์ง
์ ์๋๋ค..๋ด๊ฐ Awake๋ฅผ ์ํ๊ตฌ๋
๊ทผ๋ฐ ์ด์ ์๋ฉธ์์ผ๋์ผ๋ ค๊ณ Destroyer๋ฅผ ํ๊ฑด๋ฐ ์ด๊ฑธ ์ฃผ์์ฒ๋ฆฌํ๋ฉด ์ด๋ป๊ฒ ํ๋ผ๋๊ฑฐ์ง์?
์๋ ๋ด๊ฐ ์ฃผ์์น๋ผ๋๊ฑฐ ํด๋ ์ด์ ์์ด์ง๋ค๋๊น ใ ใ
์์์ด์ง๋๋ .. ์ด๊ฑฐ ๊ทธ๋ฅ ๋งต๋๊น์ง ๋ ๋ผ๊ฐ์;;
์๋๋ฉด ์ถฉ๋์ฒ๋ฆฌ๋ก ์ด์์์ ๋ ค๋ฉด ์ถฉ๋๊ฐ์ง๋ ์ด์ด๋ง๋ค์ด์ ํ๋ ์ด์ด๋ ์ถฉ๋๊ฐ์ง ์ํ๊ฒ ํด์ผ๋๋๋ฐ ๋ง๋กํ๊ธฐํ๋ค์ด์ ๊ฒ์ํด์ ๊ณต๋ถ ใฑใฑ
๊ทธ๋ด๋ฆฌ๊ฐ์์.. ํ๋ฉด๋๊น์ง ๋ ๋ผ๊ฐ๊ธดํ๋๋ฐ 1์ดํ์ ํ๋ฉด๋ฐ๊นฅ์์ ์์ด์ง๋๊ฑฐ๋ผ ๊ทธ๋ ๊ฒ ๋ณด์ด๋๊ฒ๋ฟ์ด์ผ.. Hierarchy ๋ณด๋ฉด ์ด์ ํ๋ฆฌํน์ด ์์ฑ๋ซ๋ค๊ฐ 1์ดํ์ ์ฌ๋ผ์ง๋๊ฒ ๋ณด์ผํ ๋ฐ ๊ทธ๊ฒ ์์ด์ง๊ฑฐ์.. ๋ ๊ธฐ์ด๊ฐ ์์ด๋ ๋๋ฌด์๋ฐ.. ๊ฑ ๊ณผ์ ๋๋ ค์น๊ณ ์ค๋๋์ฑ ๋ฒ๋ฆฌ๊ณ ์๋ก ๊ณต๋ถํ๋๊ฑฐ ์ถ์ฒ ใฑใฑ
ใ ใ ์ํผ ๊ฐ์ฌํฉ๋๋ค ์๋ฒฝ๊น์ง..๋๋ฌด ๊ณ ๋ง์์..์ผ๋จ ์์ ๊ฐ ๋๋๊ฑธ๋ณด๋ ๋ด๊ฐ ์๋ชปํ๋จ๊ฑฐ๋..์ผ๋จ ๊ฐ์ฌํฉ๋๋ค ใ ใ
์ ๋ํฐ ์ธ์คํํฐ์ฐฝ์ ์คํฌ๋ฆฝํธ์ PlayerObject๊ฐ None(Game Object) ์ด๋ ๊ฒ ๋ผ์๋์?
์์ํ๋คํ๊ณ ํ์์....new ์๊ธฐ๊ฐ ๋์ค๋ ๊ฑฐ ๋ณด๋ ์ด๋ฏธ ๋ถ๋ชจํด๋์ค์์ ์ ์ธ์ ํ๋๋ฐ ์ ์ธํ rigidbody๋ฅผ ์ด์ฉํด์ ๋ฐ์ฌํด์ผ์ง. ๋ ์์ฑํ๋ ค๊ณ ํด์ ์์คํ ์ด ํท๊ฐ๋ ค ํ๋ ๊ฑฐ ๊ฐ์๋ฐ