//Tower.cs
public enum Element {NONE,NORMAL,FIRE,POISION,FROST,STANDARD }//์ด๊ฑฐํ ํด๋์ค,NONE์ 0
public abstract class Tower : MonoBehaviour//์ถ์ํด๋์ค๋ ์ธํฐํ์ด์ค์ ์ญํ ๋ ํ๋ฉด์ ํด๋์ค์ ๊ธฐ๋ฅ๋ํจ
{
public Element ElementType { get; protected set; }//ํ๋กํ
ํฐ๋ set์ ํ์ ํด๋์ค์์๋ง ์ฌ์ฉ๊ฐ๋ฅ
}
//TomatoTower.cs
public class TomatoTower : Tower
{
private void start()
{
ElementType = Element.NORMAL;
}
}
//Projectiles.cs
public class Projectiles : MonoBehaviour
{
private Monster target;
private Tower parent;
private Transform FirePoint;
private Animator myAnimator;
private Element elementType;
public void Initialize(Tower parent)
{
this.elementType = parent.ElementType;
this.target = parent.Target;
this.parent = parent;
}
private void OnTriggerEnter2D(Collider2D other)//๋ค์ด์ค๋๊ฒ์ด other other์ ํ๊ทธ๋ก ๋ญ๊ฐ ๋ค์ด์ค๋์ง ํ๋จ
{
if(other.tag == "Monster")
{
if(target.gameObject==other.gameObject)
{
Debug.Log(elementType);
target.TakeDamage(parent.Damage,elementType);
myAnimator.SetTrigger("Impact");
//GameManager.Instance.Pool.ReleaseObject(gameObject);//the game object this component is attached to. A component is always attached to a game object.//ํฌ์ฌ์ฒด ์ง์
//ImpactBehaviour์์ ์ค๋ธ์ ํธํ ๋ฃ๋๊ฒ ์คํ
}
//Monster hitInfo = other.GetComponent<Monster>();
}
}
๋ณด๋ค์ํผ TomatoTower.cs ๋ณด๋ฉด ์๋ค์ํผ Tower์ ์๋ ์ด๊ฑฐํ ํด๋์ค์์ NORMAL์ ์ ํํ๊ฑฐ๋ ?
๊ทธ๋ฆฌ๊ณ ๋ฐ์ฌ์ฒด์ธ Projectiles.cs์์๋ ๋ฐ์ฌ์ฒด์์ ๋ฐ์ฌ์ฒด ์์ฑ์ ์ ๋ฐ์ฌ์ฒด๊ฐ ๋๊ฐ๋ ํ์์ ์์ฑ์ ๋ฐ๋ผ๊ฐ๊ฒ ํ๋จ ๋ง์ด์ผ?
๊ทธ๋ผ ๋น์ฐํ ํํธ๋ฅผ ํ๋ฉด NOMAL ํ์ ์ด ํํธํ๋ค๊ณ ๋์์ผํ๋๋ฐ
๊ณ์ ์์์ ๋ชป๋ฐ์์ NONE์ด ๋์ด.
๋์ฒด ์ด๋์ ์ค์ํ๊ฑธ๊น?
์ ์ฒด๊ฐ ์๋ ์ค๋ฅ๊ฐ ์๋ ๋ถ๋ถ๋ง ์งค๋ผ์ด
Start() -> start() ์คํ
ํ๋ ใ ใ ์จ๋ฐ ๊ฐ์ฌํฉ๋๋ค. ์ ์ด๊ฑธ๋ก 3์๊ฐ ๋ณด๋๋๋ฐ ํ ใ ใ
ใ ใ
ใ ใ
๋น์ฃผ์ผ์คํ๋์ค ์์? ์ ๋ํฐ ๊ธฐ๋ณธ ์ด๋ฒคํธ ํจ์๋ ํจ์์ด๋ฆ ํ๋์์ผ๋ก ๋จ๋๋ฐ ์ด๊ฑธ ๋ชป์ฐพ๋
์ฐ๋๋ฐ ๋ด๊ฐ ๊ทธ ์ค์ ์ ๊บผ๋๋ฏ