이번에는 곡괭이로 블록에 피해를 주는 시스템을 만들어 보았습니다





24b0d121e09c28a8699fe8b115ef046c60f82b4b9b



먼저 블록들이 가질 데이터를 만들기 위해 스크립터블 오브젝트를 사용해줍니다

SO에는 블록이름, 최대블록경도(체력), 드랍아이템 필드가 있습니다

이 SO를 블록프리팹에 할당해줍니다


이제 채광가능한 블록들이 공통적으로 가질 MinableBlock을 작성합니다




24b0d121e09c28a8699fe8b115ef0468e4afebba


24b0d121e09c28a8699fe8b115ef04699c3af5ba



현재 체력을 SO의 최대체력으로 초기화합니다

또한 프로퍼티를 사용해 값이 변할때마다 블록의 체력이 0보다 작거나 같은지 검사합니다

만약 작거나 같다면 BlockBreak함수를 통해 블록이 부서질때 로직을 실행시켜줄 계획입니다

데미지를 주는 기능은 OnDamage를 통해 해줍니다


채광당하는 스크립트를 만들었으니 채광하는 스크립트를 만들어보겠습니다




24b0d121e09c28a8699fe8b115ef046b68679832


24b0d121e09c28a8699fe8b115ef0468e3aee3bc



먼저 ray를 쏴서 블록을 검사하는 기능을 이 스크립트로 옮겨왔습니다


Mining 메소드는 ray를 통해 블록을 검출하고 채광가능한 블록이면

IsMinable을 참으로, 검출한 블록의 스크립트를 반환합니다


이제 Update메소드에서 IsMinable이 참이고 마우스 좌클릭을 했을때 MinableBlock스크립트의 OnDamage를 실행합니다

이때 매개변수로 곡괭이의 파워를 전달합니다




정상적으로 작동합니다