이건 타일 관리 클래스이다. 벽을 기본적으로는 '외형만' 갖춘 형태로, 주요한 속성들은 모두 타일로 관리하는 방식을 하기 위해 이렇게 두었다.
대충 바닥 타일이면 타일 효과도 넣고 하다 보니까 조금 길어져버리긴 함 ㅋㅋ
저것만으로도 벽의 다양한 속성을 구현은 가능하지만, 벽의 유니크함이 없다는 느낌이라 한 가지 재밌는 걸 추가하기로 함.
DestroySelf()의 RemoveThisWall()이 바로 그 주인공 되시겠다.
벽의 서로 다른 특성을 위해 직렬화는 필요하지만, (여러가지 벽 효과를 마구 섞을 때마다, 새로운 클래스를 만들수는 없으니...)
돈이 없는 필자는 고오급 에셋인 오딘같은거 못쓰기 때문에 구조체로 그걸 우회하기로 했다.
대충 Enum과 value를 받아서 그걸 기반으로 각 벽의 독특한 효과를 만들어서 벽에 붙여주기로 함 ㅋㅋ
WallBreakActionInfo를 통해 이 추상 클래스를 상속한 하위 클래스들을 구현할거임
가스통 폭발등을 위한, ExplodeOnBreak 클래스.
대충 생성자로 밸류 받고, 예외 상황은 프로퍼티로 때워버리는 상남자식 코딩을 해버림.
다른 것들도 이런 식으로 구현하면 되는데, 이걸 만들고 보니 되게 재밌는 걸 할 수 있게 되더라고.
기존에 수류탄을 던지거나, 적과 유닛 사이에 TileData의 Resistance이 1인 벽이 존재하면, 이런 식으로 그 벽을
파괴하는 기믹이 있었음.
근데 유리창이라는 놈이, 이어진 놈들은 안 깨지고 지 혼자만 깨져 버리는 것도 이상하잖아?
그래서 그냥 유리창 프리팹에 강도 1(Resistance <= 강도면 파괴 판정) 범위 1 폭발을 넣어서, 인접한 유리창을 부숴버릴 수 있게 해봤다
투척 전,
투척 후.
사진에서는 안보이지만, 폭발범위가 1이기에 가까이 붙은 놈만 체력이 많이 깎였고, 유리창은 연쇄적으로 깨지는걸 확인 가능함.
의도치 않게 이 방식으로 벽을 연쇄할 수 있게 되서 만족스럽다 ㅋㅋㅋ
댓글 2