[에버님의 강의]캐릭터의 분신을 만들어 봅시다.
페이지 정보
작성자 Leona123 작성일 24-10-03 08:44 조회 734 댓글 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
등록된 댓글이 없습니다.