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

본문 바로가기
사이트 내 전체검색

기초 이해 강좌

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

페이지 정보

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

본문

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

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

 

 

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

 

제가 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

댓글목록

등록된 댓글이 없습니다.


개인정보취급방침 이용약관 모바일 버전으로 보기 상단으로

Copyright © 무겐 어소시에이션 All rights reserved.