본문 바로가기

Unity/Knowledge

공격 시스템 구축

[ 프리팹 ]

 Unity 게임 엔진에서 사용되는 게임 오브젝트를  재사용 가능하고 관리하기 쉽게 만들기 위한 템플릿

프리팹의 변경사항은 모든 인스턴스에 즉시 반영되므로, 일관성을 유지하고 일괄적인 업데이트를 쉽게 할 수 있다.

프리팹은 레벨 디자인, 재사용 가능한 게임 요소 (캐릭터, 아이템, 장애물 등) 의 생성, 프로토타이핑 등에 주로 사용

 

[ Instantiate 함수 ]

Unity에서 제공하는 메소드로, 주어진 원본 개체의 복사본을 새로 생성하고 이를 반환한다

이 함수는 주로 게임 오브젝트, 즉 캐릭터, 아이템, 프로젝타일 등을 동적으로 게임 세계에 추가할 때 사용

원본 개체의 모든 컴포넌트와 그 프로퍼티를 복사하여 새 게임 오브젝트를 생성

이 함수를 통해 생성된 게임 오브젝트는 독립적이며, 원본 개체에 대한 변화는 이에 영향을 주지 않는다

그리고 원본 게임 오브젝트, 위치 및 회전 정보를 인자로 받을 수 있다

 

 

[ 공격 시스템과 총알 만들기 ]

PlayerInputController.cs

발사를 누가 해야할지 생각해보면 플레이어가 해야한다

 

TopDownController.cs

PlayerInputController에서 변경해주었던 IsAttacking 변수를 바탕으로 작동

 

TopDownShooting.cs

실제로 슈팅이 일어나는 부분을 정의

① TopDownController 의 OnLookEvent 에 Aim하는 부분을 등록

 TopDownController 의  OnAttackEvent에 Shoot하는 부분을 등록 및 생성

 

Arrow 만들고 프리팹

 

현재 상태

어떠한 입력도 하지 않았는데 화살이 나타난다

PlayerInputController에서 Onfire 메서드 안에 있는  Isattacking은

불값을 가지는데 이 것을 등록하지 않아서

Isattacking을 조건으로 걸음으로서 누르고 있다는걸 인지시켜야 한다.

이렇게 하면 마우스를 클릭할 때 or 키보드를 입력할 때에만 화살이 등장한다

만약 이렇게 했을 때, 화살이 나타나지 않았다면

 

이벤트 함수는 정해진 이름을 사용해야한다. 

화살이 나타나지 않았던 이유는 OnFire가 아닌 Onfire으로 해놨었더라는..

 

---------------------------

M1 > 화살의 발사방향을 Arm의 회전에 맞게 조정 해 보기

 

M2 > 화살이 앞으로 나갈 수 있게 만들어 보기

 

M3 > 화살이 벽에 닿은 경우 사라지게 만들어 보기

'Unity > Knowledge' 카테고리의 다른 글

float.MaxValue; Time.deltaTime?  (0) 2024.05.14
Prefes와 Static 차이점  (0) 2024.05.12
조준(Aim) 시스템 구축  (0) 2024.05.09
충돌 처리와 맵 구성  (0) 2024.05.09
구조와 설계 샘플  (0) 2024.05.09