[에버님의 강의]캐릭터의 분신을 만들어 봅시다. > 기초 이해 강좌

본문 바로가기

사이트 내 전체검색

뒤로가기 기초 이해 강좌

[에버님의 강의]캐릭터의 분신을 만들어 봅시다.

페이지 정보

작성자 Leona123 작성일 24-10-03 08:44 조회 737 댓글 0

본문

캐릭에 따라 적용이 아에 안될 수도 있으며, 일부 기술들의 오작동이 생길 수도 있습니다.

                                                                                   (예로 제 버서커에는 적용 자체가 안됩니다.)

 

 

코드를 짜보고 자세한 버그실험은 안해봐서 어떤 문제가 발생되는지는 모르겠으나,

 

제가 kuri님의 세이버로 실험해보니 잘 되더군요.

 

다만, 기존의 AI가 이 분신이 없다는 전제로 짜여진 AI라서 본체에 비해 조금 멍청(?)할 수는 있습니다.

 

분신쿵푸맨의 동영상을 보니깐 각각의 분신들이 제각각 움직이는걸 봐서는 각각 AI가 있는 걸로 보이더군요.

 

그 정도까지 할려면 전용으로 AI를 짜줘야 할 것이지만, 이 정도로만 써도 그리 문제는 없을 겁니다.

 

그리고 AI를 부여할려면 그 캐릭에 AI가 설정이 되어 있어야 합니다만.. AI설정이 없는 캐릭도 제법 있기 때문에

 

분신을 자신이 조종 할 수 있게 하였으며, 옵션격으로 짠 코드로 AI를 부여하게 했습니다.

 

원치 않는 부분이 있으시면 제가 주석을 달아둔데로 수정하셔서 사용하시면 되겠습니다.

 

아래에 있는 코드를 적용하고 싶은 캐릭터의 cns에서 [Statedef -2] 로 검색하시고 바로 밑에다가 붙여넣으시면 됩니다.

 

 

[State -2, Helper]
type = Helper
trigger1 = numhelper(25603)=0
helpertype = player
name = "shadow"
ID = 25603
stateno = 0
pos = -50,0
postype = p1 

facing = 0
keyctrl = 1   ;<- 조작이 안되게 하고 싶으시면 이 숫자를 0으로 바꾸세요.
ownpal = 1

 

[State -2, VarAdd]
type = VelAdd
triggerall = ishelper(25603)
trigger1 = root,vel x > 0
trigger1 = root,vel x = vel x
trigger2 = root,vel x < 0
trigger2 = root,vel x = vel x
x = ifelse(root,vel x < 0, -1 ,1)

 

[State -2, Turn]
type = Turn
triggerall = ishelper(25603)
triggerall = stateno = [0,19]
trigger1 = (pos x) - (Enemynear,pos x) < 0
trigger1 = facing=-1
trigger2 = (pos x) - (Enemynear,pos x) >= 0
trigger2 = facing=1

 

[State -2, ChangeState]
type = ChangeState
trigger1 = ishelper(25603)
trigger1 = roundstate != 2
trigger1 = root,stateno != stateno
value = root,stateno

 

 

 

 

;이 밑에 있는 코드는 옵션으로 넣은 코드입니다. 사용하고 싶은데로 골라서 그대로 위의 코드 밑에 붙여넣어주시면 됩니다.

 

 

 

 

;분신의 색을 조금 밝게 만들어 본체와 구별이 가도록 하는 옵션입니다만,

;특성 기술이나, 특정 상태시에 캐릭 색이 변하게 되는 효과는 받지 못하게 됩니다.

;이 코드를 넣든 말든 본체에는 아무런 해가 가지는 않습니다.

 

[State -2, PalFXWiz]
type = PalFX
trigger1 = ishelper(25603)
time = 1
add = 80,150,150
mul = 200,200,200
sinadd = 0,0,0,1
invertall = 0
color = 256

pausemovetime = 9999
supermovetime = 9999
ignorehitpause = 1

 

 

;분신이 생성되면 AI를 부여하는 것입니다만, 이 코드는 적용전에 캐릭터의 AI로 쓰인 var번호를 알아야 합니다.

;당연하게도.. 캐릭터에 AI가 짜여지지 않았다면 이 코드는 무용지물입니다.

;캐릭터마다 Al var값이 틀리기 때문에 사용자가 직접 찾아내어 수정을 해야 합니다.

;AI 찾는 법은 http://cafe.naver.com/ArticleRead.nhn?clubid=11466207&page=1&menuid=55&boardtype=L&articleid=8696

;를 참고 해보시고, 알아낸 AI var값을 아래의 코드에 수정합니다. 아래 코드는 kuri님의 세이버의 AI번호기 때문에 세이버는

;그대로 사용하시면 됩니다.

 

[State -2, VarSet]
type = VarSet
trigger1 = ishelper(25603)
trigger1 = var(40) = 0    ;<--var(AI번호)  로 수정
v = 40                        ;<--v = AI번호  로 수정
value = 1

 

 

 

 

 

 

(아래의 코드는 예를 들어 올린 것입니다. 이 코드를 붙여넣으시면 안됩니다;)

AI의 var값을 찾는 방법에 대해 조금 더 보충해서 설명하자면, cmd에서 아래와 비슷한 것을 찾습니다.

 

[State -1, AI]
type = Varset
;triggerall = (stateno = [0,620]) || (stateno = [5000,5060])
trigger1 = command = "AI"
trigger2 = command = "AI2"
trigger3 = command = "AI3"
trigger4 = command = "AI4"
trigger5 = command = "AI5"
trigger6 = command = "AI6"
trigger7 = command = "AI7"
trigger8 = command = "AI8"
trigger9 = command = "AI9"
trigger10 = command = "AI10"
trigger11 = command = "AI11"
trigger12 = command = "AI12"
trigger13 = command = "AI13"
trigger14 = command = "AI14"
trigger15 = command = "AI15"
trigger16 = command = "AI16"
trigger17 = command = "AI17"
trigger18 = command = "AI18"
trigger19 = command = "AI19"
trigger20 = command = "AI20"
v = 40                    <---- 여기 있는 이 번호가 AI로 사용한 Var값입니다.

value = 1             

 

보통 CMD에다가 저런식으로 미리 인간이 사용할 수 없는 커맨드를 설정해두고,

 

이를 컴퓨터가 사용했을대 AI가 켜지도록 되어있습니다.

 

하지만 극히 드물지만 이 내용이 CMD가 아닌 cns에 해놓은 경우도 있고, 이 방법을 사용하지 않고 helper를 이용하여 AI를 발동

 

시키기도 합니다. helper를 이용한 방법의 AI를 찾는법은 위에 링크한 강의내용을 참고하세요.

 

 

그리고 마지막으로 분신의 갯수를 늘리시고 싶으시다면 저 코드들을 전체적으로 다시 붙여넣으시고 복사한 코드는 helper(25603)이라고 되어 있는 부분의 끝자리 숫자를 하나씩 늘려서 수정해주세요. 그리고 처음 코드, type=helper의 옵션으로 쓰인 ID 25603의 숫자도 똑같이 늘려줍니다.

분신의 숫자를 너무 많이 늘리면 렉이 발생되니 적당히 하시길

ex) Numhelper(25604)

ex) ishelper(25604)

추천0

댓글목록 0

등록된 댓글이 없습니다.

개인정보처리방침 이용약관

사이트 정보

Copyright © 무겐 어소시에이션 All rights reserved.
PC 버전으로 보기