프로그래밍 공부
작성일
2024. 2. 20. 23:40
작성자
WDmil
728x90

마법사용행위를 두개 이상 생성하고 관리해보자.

배열형태로 관리하면서, 객체의 여러가지 예외상황도 재처리할 것 이다.


WIzard_Skill

각 스킬의 관리는 위와같다.

 

위의 4개 이벤트를 기준으로 마법으로 오버라이딩하여 사용한다.


Heal

회복마법의 관리이다.

 

마법을 사용하고, 사용종료했을 때의 객체관리를 이야기한다.

Spell이벤트가 발동되면, 부모값을 참조하여, 부모의 Move여부를 체크또는 체크해제하고, Player에서 Montage를 재생한다.

 

ENd는 마법사용이 종료되었을 때 발동함으로, CanMove를 역으로 바꾸어주고, 체력의 경감여부와 경감된 데이터를 기입해준다.

 


Warp

일단, Tick마다, 해당 마법의 활성화 여부와, 트레일(커서)의 충돌을 확인하고, 충돌된 데이터가 존재한다면, 충돌데이터의 이름을 확인하고 바닥일경우, 충돌한다.

 

충돌했을 때, 위치좌표를 표시해주는 커서를 표현해주고, 해당 커서의 위치를 조정한다.

Spell시에는, 사용을 이야기함으로, 현재 지정위치가 이동이 가능한 구간인지 확인하고 이동이 가능하다면, 플레이어에 접속해 순간이동 모션을 사용한다.

Location은 애니메이션의 종료때 순간이동하게 하기 위해 저장한다.

End시에는 해당위치로 순간이동하고, 상태값을 idle로 변환한다.


Wizard

우리가 사용하던 Wizard는 단일객체 기준으로 코드가 작성되어있다.

이것을 다중객체 이용형태로 바꾸기 위해서는, 배열을 활용해야 한다.

 

배열을 활용해서 객체를 여러개 관리해보자.

BeginPlay이벤트로, 현재 객체를 Wizard로 변환하고(설정), 필요한 객체들을 전부 배열에 저장한다.

스왑을 구현했다.

 

무기스왑여부를 배열로 확인하고 Q나 E를 입력받아서 위쪽 또는 밑으로 무기를 내릴 수 있게 했다.

휠로 구현해도 무방하나 현재 휠의 키 입력맵핑은. 확대 축소로 이루어져있기 때문에 Q와 E로 구현했다.

일단, 무기의 여부를 String으로 출력한다.

Attack과 EndAttack을 위와같이 구현한다.


테스트

728x90