폰으로 쓰는거라 글 정렬이 안되있음 ㅈㅅㅈㅅ
foreach (Collider2D collider in coll){
if(collider.tag == "Enemy" && collider.isTrigger == false){
if (gauge<24&&combo != -1){
gauge+=0.2f;
gauge = Mathf.Floor(gauge * 10f) / 10f;
}
if(1<=combo && combo<=3){
if(collider.game.layer == LayerMask.NameToLayer("KuroOni")){
collider.GetComponent<KuroOniMovement>().Take_Attack(damage*damageMultiplier*rage_bonus,0.4f,0,0.2f,0);
}
else if(collider.game.layer == LayerMask.NameToLayer("Oni")){
collider.GetComponent<OniMovement>().Take_Attack(damage*damageMultiplier*rage_bonus,0.4f,0,0.2f,0);
}
else if(collider.game.layer == LayerMask.NameToLayer("SamuraiOni")){
collider.GetComponent<SamuraiOniMovement>().Take_Attack(damage*damageMultiplier*rage_bonus,0.4f,0,0.2f,0);
}
}
if(combo==4){
if(collider.game.layer == LayerMask.NameToLayer("KuroOni")){
collider.GetComponent<KuroOniMovement>().Take_Attack(damage*damageMultiplier*rage_bonus,1,0,0.35f,2);
}
else if(collider.game.layer == LayerMask.NameToLayer("Oni")){
collider.GetComponent<OniMovement>().Take_Attack(damage*damageMultiplier*rage_bonus,1,0,0.35f,2);
}
else if(collider.game.layer == LayerMask.NameToLayer("SamuraiOni")){
collider.GetComponent<SamuraiOniMovement>().Take_Attack(damage*damageMultiplier*rage_bonus,1,0,0.35f,2);
}
}
else if(combo==-1){
if(collider.game.layer == LayerMask.NameToLayer("KuroOni")){
collider.GetComponent<KuroOniMovement>().Take_Attack(damage*damageMultiplier*rage_bonus,1,10,0.35f,1);
}
else if(collider.game.layer == LayerMask.NameToLayer("Oni")){
collider.GetComponent<OniMovement>().Take_Attack(damage*damageMultiplier*rage_bonus,1,10,0.35f,1);
}
else if(collider.game.layer == LayerMask.NameToLayer("SamuraiOni")){
collider.GetComponent<SamuraiOniMovement>().Take_Attack(damage*damageMultiplier*rage_bonus,1,10,0.35f,1);
}
}
else if (combo == -2){
if(collider.game.layer == LayerMask.NameToLayer("KuroOni")){
collider.GetComponent<KuroOniMovement>().Take_Attack(damage*damageMultiplier*rage_bonus,0,15,0.35f,2);
}
else if(collider.game.layer == LayerMask.NameToLayer("Oni")){
collider.GetComponent<OniMovement>().Take_Attack(damage*damageMultiplier*rage_bonus,0,15,0.35f,2);
}
else if(collider.game.layer == LayerMask.NameToLayer("SamuraiOni")){
collider.GetComponent<SamuraiOniMovement>().Take_Attack(damage*damageMultiplier*rage_bonus,0,15,0.35f,2);
}
}
isHit = true;
}
}
Take_Attack으로 데미지를 주려고 하는데
문제는 적 스크립트가 다 달라서 코드의 길이가 배수로 늘고있는중 현재 적 3마리 구현했는데도 이럼니다
제가 생각해도 이건 아닌거같아서 도움 요청합니다
어떻게 해결을 해야 할까요 도와주시면 감사하겠슴니다
- dc official App
monsterStat 스크립트 새로 만들어서 거기에 TakeDamage함수 넣고 그거로 퉁치면 안됨?
MonsterMovement라는 클래스를 만들고 다른 몬스터들이 그 클래스를 상속받도록 하삼. MonsterMovement 클래스에 virtual Take_Attack 함수를 구현하고, 나머지에서 그 함수를 override해서 구현하삼 - dc App
그리고 몬스터매니저 같은 스폰된 몬스터 관리하는 함수 따로 만들어서 거기서 서칭해서 하도록 하삼 GetComponent 개 무거운 함수니까 지양해야함 - dc App
적 오브젝트에 스크립트를 두개 써서 디지거나 피깎이는걸 공통으로 하면 되지안음?
데미지 받을 수 있는 친구들을 인터페이스로 묶어서 저기에선 메서드만 호출해주고, 실 구현은 각자 스크립트에서 하기
Movement 클래스에 데미지 받는 부분까지 있는 건 클래스의 책임을 벗어난거라고 생각하고, 몬스터 말고도 데미지 받을 수 있는 오브젝트(상자 등)이 있으면 몬스터 클래스를 상속받지 않고도 데미지를 받을 수 있게 됨
인터페이스 써
ㄱㅅㄱㅅ 감사합니다!!! 집에가서 시도해봄 - dc App
else if(collider.game.layer == LayerMask.NameToLayer("Oni")){ collider.GetComponent().Take_Attack(damage*damageMultiplier*rage_bonus,0,15,0.35f,2); }레이어 받지말고 그냥 IDamageable 로 묶어서if(IDamageable){ 데미지 구현}IDamageable 코드에는이제 캐릭터 스탯에 따라서 데미지 계산하게 하면되는거 아닌가?아님말구 난 코드 잘 못짜서
새 글로 수정하려니까 글 자체가 안써지네
이거보고 스파게티 먹으러 간다