MSW메이플월드

메이플월드 템플런식 맵 제작 2. 보스몬스터 패턴 소환(1)

현구구 2022. 12. 26. 17:53

먼저 현재 맵에 새로운 컴포넌트를 추가해준다.

그리고 프로퍼티를 다음과 같이 추가한다.

magnus는 보스 캐릭터를 받아온다

smashPos는 날아오는 검기의 위치를 가져온다.

windpos는 날아오는 회오리의 위치를 가져온다.

beginplay함수에서 맵이 시작될 때 math.randomseed(os.time())으로 랜덤성을 한번 초기화 해주고

아래 날아오는 공격들의 위치를 초기화 해준다.

smashpos[1]은 1층으로 검기가 날아올 때 y위치를 초기화 해준것이다.

windPos는 y축으로 2층을 잡아먹기 때문에 1층과 2층 위치만을 초기화해주었다.

onupdate함수는 다음과 같다.

매그너스의 패턴이 발동 될 시 해당 폼이 true이면 _SpawnService:SpawnByModelId 를 통해 장애물을 소환한다.

_SpawnService:SpawnByModelId("model://6a00c44c-5c6a-4d79-b66f-83eedab7a1af","smash",Vector3(self.magnus.TransformComponent.Position.x - 2.0,self.smashPos[smashRandom],0),_EntityService:GetEntity("9e067ae9-9186-4a36-b0f8-0fc51be9e8c7"))

이 코드는 model://6a00c44c-5c6a-4d79-b66f-83eedab7a1af 라는 모델을(장애물을 미리 모델화 해야한다.)

"smash"라는 이름으로

Vector3(self.magnus.TransformComponent.Position.x - 2.0,self.smashPos[smashRandom],0)

x축은 매그너스기준으로 x축으로 -2에서, y축은 1층과 3층 중에 랜덤으로 소환할 위치를 지정해주고

_EntityService:GetEntity("9e067ae9-9186-4a36-b0f8-0fc51be9e8c7") 해당 맵에 소환한다.

 

해당 코드가 끝나면 매그너스의 폼을 false로 지정해주면 된다.

장애물을 모델화 한 것이다.

4개의 패턴이 발동되면 각각 BlackWind, attacksmash, windmil,slowAttack 모델이 생기게된다.


1. smash

smash모델은 다음 2개의 컴포넌트를 가진다.

smashmove컴포넌트는 다음과 같다.

Onupdate함수에서 매 틱마다 0.2만큼 x좌표를 이동하고 x좌표가 60(맵의 끝)을 넘어가면 더 이상 이동하지 않도록 한다.

 

그리고 아래 triggerEnter함수에서 만약 캐릭터와 장애물이 부딪혔을 시 캐릭터의 이동속도를 0.6으로 3초간 줄이며 캐릭터의 머리의에 느려지는 이미지를 소환한다.

smash_destroy함수는 장애물이 특정위치에 도달하면 삭제하도록 한다.