필요한 몬스터와 NPC리소스를 모조리 찾아서 다 받아놨다.
리소스라도 든든해지니 마음도 조금 든든해졌다.
배틀시스템 인터페이스
몬스터,보스,캐릭터 상관없이 달아주기만 하면 편하게 쓸 수 있는 인터페이스를 만들었다.
public interface BattleSystem
{
void OnAttack(float Damage);
void OnDamage(float Damage);
}
이제 이것만 붙여놓으면 때리고 맞을때 얘네를 호출하면 된다.
몬스터 틀만들기
오늘은 계획과는 다르게 몬스터 작업부터 시작했다.
일단 몬스터의 체력과 공격력은 항상 일정하니(주인공처럼 올라갈 일이 별로 없으니)
스크립터블오브젝트를 사용하여 데이터를 만들었다.
일단 두더지 캐릭터 하나만 추가하여 만들었고 이것저것 기획한 스텟을 넣어주고
모든 몬스터들이 공유할 추상 클래스 Monster를 만들었다.
public abstract class Monster : MonoBehaviour, BattleSystem
{
//스크립터블 오브젝트
[SerializeField] protected MonsterStat Mon = null;
[SerializeField] protected AutoDetecting Detect = null;
protected Material mat;
private GameObject Player;
public MonsStat myStat = new MonsStat();
public abstract void Move();
public abstract void Battle();
public abstract void Death();
public abstract void OnAttack(float damage);
public abstract void OnDamage(float damage);
public enum State
{
None, Create, Common , Battle , Death
}
//밑은 생략
}
강의때 지겹도록 한 유한상태기계 스타일로 코드를 짰다.
State 에 맞춰
Common 단계때는 Move함수
Battle 일때는 배틀함수
죽었을땐 데스 함수를 불러오게끔 만들어놔서
배틀시스템을 포함하여 저 5가지 함수는 자식클래스에서 꼭 구현하도록 했다.
public struct MonsStat
{
public float MaxHP;
public float HP;
public float Speed;
public float ATK;
public float DEF;
public float AttackRange;
public float Drop_Rate;
public void init(float MaxHP, float HP, float Speed, float ATK, float DEF, float AttackRange, float Drop_Rate)
{
this.MaxHP = MaxHP;
this.HP = HP;
this.Speed = Speed;
this.ATK = ATK;
this.DEF = DEF;
this.AttackRange = AttackRange;
this.Drop_Rate = Drop_Rate;
}
}
처음엔 스크립터블 오브젝트가 그냥 클래스에 있는 변수처럼 들어가는줄알고
공격받을때 스크립터블 오브젝트에서 바로 HP를 빼줬는데 어느새 마이너스가 되어있었다.
그래서 구조체를 이용해 스크립터블 오브젝트 안에있는 데이터들을 init함수로 초기화 시켜줬다.
구현한 기능들
이 두더지 몬스터는 쓰고싶은데 애니메이션이 걷는거 밖에 없어서 자폭컨셉으로 만들었다.
아직 완성은 안됐다
두더지의 사거리에 들어가면 졸졸 따라온다.
벗어나면 다시 일반상태로 돌아가는데 일반상태를 아직 구현을 안했다.
두더지의 인식범위보다 내 총이 사거리가 더 길기 때문에 멀리서 죽여봤다.
근데 이 두더지녀석은 인식 범위를 넒게 하고 스피드도 빠르게해서 플레이어를 괴롭힐 예정이다
몸에 닿으면 터지고 HP가 깎인다.
내일은 3개의 일반몹들에 대한 구현을 다 끝내고 ,
맵을 슬슬 만들어야겠다.
개인포폴 작업 8일차 끝.
'개발일지 > Unity 개인 포트폴리오 개발일지' 카테고리의 다른 글
개인포폴 10,11일차 / 맵 & NPC 대화 (0) | 2022.06.26 |
---|---|
개인포폴 작업 9일차 / 달팽이 몬스터 구현 (0) | 2022.06.25 |
개인포폴 작업 7일차 / 기획 & UI작업과 사운드 매니저 (0) | 2022.06.23 |
개인포폴 작업 6일차 / 블렌더 본 리깅 & 기능구현과 버그수정 (0) | 2022.06.22 |
개인포폴 작업 5일차 #2 / 넉백기능 구현 (4) | 2022.06.21 |
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!