뭐, 많은 글을 보니까요... 전투에니메이션 11장을 만들어서
전투애니 만들고 적그룹에 턴제를 0 으로 한다음 변수처리에서 만들라는데요..
전 뭔가 뭔지 모르겠네요;; 일단 도트작업으로 전투애니메이션 11개 만들었습니다.
아, 만드는법은 아래글... ---------- (어떤님이 설명한 글입니다. 저는 이해를 못하겠네요.)
아랫글을보시면서 어떻게만들어지는지 알려주세요;;
적의 HP를 표시하고자 하는 생각은 RPG2000의 기본 전투를 하면서 나름대로 재밌게 꾸며보고자 하려고 하는 찰나 옛시절 재밌게 했던 영웅전설(드레곤 슬레이어 시리즈)I,II의 전투가 생각나 그 전투와 RPG2000의 기본 전투와의 차이가 무엇인가 알아내려고 해서 마침내 여러가지 이유중 하나로써 적의 HP의 표시 여부가 영향을 미친다는 결론을 내리게 됐습니다.
.
이 표시방법은 '적 그룹'에 있는 '전투 이벤트'에서 이루어집니다. 물론 숫자로 표시하면 더 좋을것은 없겠지만 그렇게 하면 숫자 하나하나를 처리해 주어야 하기 때문에 상당히 오랜 시간이 걸릴 뿐 아니라 제가 지금부터 설명하려 하는 게이지바 모양과 큰 차이가 나는것도 아니기 때문에 별 효용성이 없다고 생각하여 숫자로 표시하는 방법을 채택하지 않았습니다. 이 게이지바는 전투애니메이션으로 처리하게 될 것입니다.
.
이제 소스가 필요합니다.
몬스터의 크기에 맞춰 HP바 모양을 만들어서 0%~100%까지 차 있는 그림을 전투애니메이션 그래픽으로 준비합니다. 여기서도 100개를 해버리면 좋겠지만 역시 상당한 비효율성으로 저는 10%단위로 끊어서 모두 11개의 그래픽을 사용했습니다.
이제 그 전투애니메이션 그래픽으로 전투애니메이션을 만들도록 합시다.
저는 13프레임에 서서히 나타났다가 서서히 사라지는 모양으로 만들었습니다만, 이것은 여러분의 자유입니다. 몇번 테스트를 거쳐 스스로 만족할만한 게이지바를 마련하도록 하십시오.
자 그럼, 이제 '적 그룹'으로 가서 '전투 이벤트'를 봅시다.
그 전에 잠깐.
이 표시방법은 몬스터의 숫자에 따라 다르게 구분지어야만 합니다.
즉, 몬스터가 한마리가 있으면 한마리가 나오는걸 하나 만들어줘야 하고
두마리면 두마리, 세마리면 세마리가 나오는걸 만들어줘야 합니다.
다시 돌아와서 이제 전투 이벤트에서 시작조건을 봅시다.
여기서 턴을 0으로 하면 전투 시작전에 한 번 실행하고 다시는 실행하지 않는다는건 알고 계시겠죠?
그 시작 조건을 턴0으로 해놓고 변수 하나를 만듭니다. 이 변수에 적의 최대 HP를 대입하도록 합니다. 적이 세마리면 3개의 변수를 만들어야겠죠.
그리고 새 페이지를 만들어서 이번엔 시작조건에 "적의 HP가 100%~100%, 즉 100%일때"로 합니다. 그럼 이 이벤트는 적의 HP가 100%라면 항상 나오는 이벤트겠죠? 좋습니다. 이제 여기에 조작을 해줍시다.
먼저 변수를 조작해줘야 합니다. 왜냐면 우리가 표시하고자 하는 게이지바는 %기준이기 때문에 적의 HP를 %가 되도록 해야하기 때문입니다. 이 과정은 간단합니다. 변수 한개면 됩니다.. 적의 HP 백분율 정도면 될까요.. 이 변수에 적의 HP를 대입하고 100을 곱해줍니다. 그리고 나서 '나눗셈'을 해주는데 무엇으로 나누어 지느냐 하면, 최대 HP로 나누어주는 겁니다. 아까 0턴에서 대입해준건 기억하고 계시겠죠? 최대 HP는 변하지 않기 때문에 굳이 여러번 대입해 주지 않아도 괜찮기에 0턴으로 모셨습니다. 최대HP를 변하게 하고 싶으시다면 0턴이 아닌 적HP100% 페이지에 그 변수대입을 주어도 괜찮습니다.
드디어 백분율이 구해졌습니다.
이제 조건분기를 해야 할 때가 왔습니다.
먼저 조건분기에서 '백분율'변수가 100과 같은경우로 합니다.(그 외의 경우 체크)
그리고 그 안에 전투애니메이션 표시로 아까 만들었던 게이지바를 적에게 표시합니다.
그리고 그 외의 경우 안에 또다시 조건분기를 만들어서(그 외의 경우 체크) 이번엔 "90≤백분율<100" 이렇게 해주고* 아까 만들었던 게이지바중 90%에 해당하는것을 표시해줍니다. 다시 그 외의 경우 안에 조건분기를 만들어 줘서(그 외의 경우 체크) 이번엔 "80≤백분율<90" 해주고, 80%그림 보여주고.. 다시 그 외의 경우에 조건분기를 만들어서.......
이렇게 반복해서 제일 마지막엔 "1≤백분율<10"이렇게 해주고 0%모양을 보여주는 겁니다. 0이상이 아닌 이유는 0일땐 표시하고 자시고 할 것 없이 몬스터는 죽어야 하기 때문입니다.
**
위에 *표시한곳의 참고입니다.
90이상100미만입니다. 이것은 조건분기 두개를 중첩한것으로 먼저 조건분기에 100보다 작을때, 그리고 그 안에 다시 조건분기로 90이상일때.. 이렇게 하는겁니다.
그 다음부터는 "~미만"을 해 줄 필요없이 "~이상"만 해 주면 됩니다.
**
100%짜리만 할 순 없겠죠? 이 이벤트가 시작조건이 100%일때잖아요.
다시 하나의 페이지를 만들어서 이번엔 그 시작조건을 1~99%로 해놓습니다.
그리고 다시 노가다할 필요 없이 앞 페이지의 내용을 복사해서 붙여넣기 해버리면 됩니다.
자.. 이제 거의 다 왔습니다.
우리가 지향하는 HP표시는 우리의 주인공이 적을 한 대 때렸을 때 곧바로 그 손상정도가 나타나야 하는 것입니다. 그러나 위에 해놓은 것으로만 끝내버리면 처음 시작할때만 나오고 한대 때리고 나서부터는 나오지 않습니다. 그것은 "시작조건"을 만족한 순간에 그 이벤트를 시작하기 때문입니다. 즉, 처음 100%일땐 나오지만 한대 때리면 1~99%가 되어서 약간 손상된 게이지바가 나옵니다. 그러나 그 다음턴부터 때리게 되면 1~99%에서 1~99%로 아무런 변화가 없습니다. 분명히 시작조건은 만족했는데 안나오는 것이죠. 제가 머리에 쥐나도록 연구한 결과 이것은 시작조건에 변화가 있어야 그 이벤트를 한다는 것이죠.
1~99%에서 1~99%로 되는것은 변화하는게 아니죠.. 그대로이기 때문에 이벤트가 발생하지 않습니다. 그래서 이것을 어떻게 해결해야 하는가 생각한 끝에 "시작조건에 변화를 줘야겠다"라고 생각했습니다. 저 시작조건이 변화하는 것은 주인공이 때려서 HP가 줄어드는 순간 이므로 1~99%에서 1~99%가 되지 않도록 하기 위해선 1~99%에서 100%가 되도록 하는 수 밖에 없습니다. 그럼 적의 HP를 회복시켜야죠. 하지만 적의 HP를 회복시키면 전투가 안되죠. 그래서 이런 방법을 생각해냈습니다. 일단 회복시키기 전에 [적의 최대 HP] - [현재 HP]를 변수 하나로 기억하게 했습니다. 그리고 회복시키는 거죠. 그럼 컴퓨터는 뭣도 모르고 100%이기 때문에 다시 표시하게 됩니다. 이 때를 포착해 아까 저장해 놓은 HP의 차이를 줄어들게 하고 표시를 하게 하는 겁니다. 이것을 위해서 0턴에 'HP차이'변수를 0이라고 해놓고 1~99%탭의 맨 아래쪽에 적의 현재 HP와 적의 최대 HP의 차이를 기억하는 변수를 만들어 놓습니다. (이것은 하나의 변수에 적HP를 대입하고 다른 변수에 최대 HP를 대입한 후 빼주면 됩니다. 절대 이전에 만들어 놓았던 최대HP변수를 사용해서는 안됩니다.) 그리고 나서 100%맨위와 1~99% 맨 위에 "적 HP의 증감"을 이용해 아까 만든 적HP차이 변수만큼 줄어들게 합니다. 물론 전투 불능은 허가해야죠. 이렇게 하면 100%에서 1~99%로 왔다갔다 거리며 계속해서 표시하게 됩니다. 결국 완성한 것입니다.
.
이 표시방법은 '적 그룹'에 있는 '전투 이벤트'에서 이루어집니다. 물론 숫자로 표시하면 더 좋을것은 없겠지만 그렇게 하면 숫자 하나하나를 처리해 주어야 하기 때문에 상당히 오랜 시간이 걸릴 뿐 아니라 제가 지금부터 설명하려 하는 게이지바 모양과 큰 차이가 나는것도 아니기 때문에 별 효용성이 없다고 생각하여 숫자로 표시하는 방법을 채택하지 않았습니다. 이 게이지바는 전투애니메이션으로 처리하게 될 것입니다.
.
이제 소스가 필요합니다.
몬스터의 크기에 맞춰 HP바 모양을 만들어서 0%~100%까지 차 있는 그림을 전투애니메이션 그래픽으로 준비합니다. 여기서도 100개를 해버리면 좋겠지만 역시 상당한 비효율성으로 저는 10%단위로 끊어서 모두 11개의 그래픽을 사용했습니다.
이제 그 전투애니메이션 그래픽으로 전투애니메이션을 만들도록 합시다.
저는 13프레임에 서서히 나타났다가 서서히 사라지는 모양으로 만들었습니다만, 이것은 여러분의 자유입니다. 몇번 테스트를 거쳐 스스로 만족할만한 게이지바를 마련하도록 하십시오.
자 그럼, 이제 '적 그룹'으로 가서 '전투 이벤트'를 봅시다.
그 전에 잠깐.
이 표시방법은 몬스터의 숫자에 따라 다르게 구분지어야만 합니다.
즉, 몬스터가 한마리가 있으면 한마리가 나오는걸 하나 만들어줘야 하고
두마리면 두마리, 세마리면 세마리가 나오는걸 만들어줘야 합니다.
다시 돌아와서 이제 전투 이벤트에서 시작조건을 봅시다.
여기서 턴을 0으로 하면 전투 시작전에 한 번 실행하고 다시는 실행하지 않는다는건 알고 계시겠죠?
그 시작 조건을 턴0으로 해놓고 변수 하나를 만듭니다. 이 변수에 적의 최대 HP를 대입하도록 합니다. 적이 세마리면 3개의 변수를 만들어야겠죠.
그리고 새 페이지를 만들어서 이번엔 시작조건에 "적의 HP가 100%~100%, 즉 100%일때"로 합니다. 그럼 이 이벤트는 적의 HP가 100%라면 항상 나오는 이벤트겠죠? 좋습니다. 이제 여기에 조작을 해줍시다.
먼저 변수를 조작해줘야 합니다. 왜냐면 우리가 표시하고자 하는 게이지바는 %기준이기 때문에 적의 HP를 %가 되도록 해야하기 때문입니다. 이 과정은 간단합니다. 변수 한개면 됩니다.. 적의 HP 백분율 정도면 될까요.. 이 변수에 적의 HP를 대입하고 100을 곱해줍니다. 그리고 나서 '나눗셈'을 해주는데 무엇으로 나누어 지느냐 하면, 최대 HP로 나누어주는 겁니다. 아까 0턴에서 대입해준건 기억하고 계시겠죠? 최대 HP는 변하지 않기 때문에 굳이 여러번 대입해 주지 않아도 괜찮기에 0턴으로 모셨습니다. 최대HP를 변하게 하고 싶으시다면 0턴이 아닌 적HP100% 페이지에 그 변수대입을 주어도 괜찮습니다.
드디어 백분율이 구해졌습니다.
이제 조건분기를 해야 할 때가 왔습니다.
먼저 조건분기에서 '백분율'변수가 100과 같은경우로 합니다.(그 외의 경우 체크)
그리고 그 안에 전투애니메이션 표시로 아까 만들었던 게이지바를 적에게 표시합니다.
그리고 그 외의 경우 안에 또다시 조건분기를 만들어서(그 외의 경우 체크) 이번엔 "90≤백분율<100" 이렇게 해주고* 아까 만들었던 게이지바중 90%에 해당하는것을 표시해줍니다. 다시 그 외의 경우 안에 조건분기를 만들어 줘서(그 외의 경우 체크) 이번엔 "80≤백분율<90" 해주고, 80%그림 보여주고.. 다시 그 외의 경우에 조건분기를 만들어서.......
이렇게 반복해서 제일 마지막엔 "1≤백분율<10"이렇게 해주고 0%모양을 보여주는 겁니다. 0이상이 아닌 이유는 0일땐 표시하고 자시고 할 것 없이 몬스터는 죽어야 하기 때문입니다.
**
위에 *표시한곳의 참고입니다.
90이상100미만입니다. 이것은 조건분기 두개를 중첩한것으로 먼저 조건분기에 100보다 작을때, 그리고 그 안에 다시 조건분기로 90이상일때.. 이렇게 하는겁니다.
그 다음부터는 "~미만"을 해 줄 필요없이 "~이상"만 해 주면 됩니다.
**
100%짜리만 할 순 없겠죠? 이 이벤트가 시작조건이 100%일때잖아요.
다시 하나의 페이지를 만들어서 이번엔 그 시작조건을 1~99%로 해놓습니다.
그리고 다시 노가다할 필요 없이 앞 페이지의 내용을 복사해서 붙여넣기 해버리면 됩니다.
자.. 이제 거의 다 왔습니다.
우리가 지향하는 HP표시는 우리의 주인공이 적을 한 대 때렸을 때 곧바로 그 손상정도가 나타나야 하는 것입니다. 그러나 위에 해놓은 것으로만 끝내버리면 처음 시작할때만 나오고 한대 때리고 나서부터는 나오지 않습니다. 그것은 "시작조건"을 만족한 순간에 그 이벤트를 시작하기 때문입니다. 즉, 처음 100%일땐 나오지만 한대 때리면 1~99%가 되어서 약간 손상된 게이지바가 나옵니다. 그러나 그 다음턴부터 때리게 되면 1~99%에서 1~99%로 아무런 변화가 없습니다. 분명히 시작조건은 만족했는데 안나오는 것이죠. 제가 머리에 쥐나도록 연구한 결과 이것은 시작조건에 변화가 있어야 그 이벤트를 한다는 것이죠.
1~99%에서 1~99%로 되는것은 변화하는게 아니죠.. 그대로이기 때문에 이벤트가 발생하지 않습니다. 그래서 이것을 어떻게 해결해야 하는가 생각한 끝에 "시작조건에 변화를 줘야겠다"라고 생각했습니다. 저 시작조건이 변화하는 것은 주인공이 때려서 HP가 줄어드는 순간 이므로 1~99%에서 1~99%가 되지 않도록 하기 위해선 1~99%에서 100%가 되도록 하는 수 밖에 없습니다. 그럼 적의 HP를 회복시켜야죠. 하지만 적의 HP를 회복시키면 전투가 안되죠. 그래서 이런 방법을 생각해냈습니다. 일단 회복시키기 전에 [적의 최대 HP] - [현재 HP]를 변수 하나로 기억하게 했습니다. 그리고 회복시키는 거죠. 그럼 컴퓨터는 뭣도 모르고 100%이기 때문에 다시 표시하게 됩니다. 이 때를 포착해 아까 저장해 놓은 HP의 차이를 줄어들게 하고 표시를 하게 하는 겁니다. 이것을 위해서 0턴에 'HP차이'변수를 0이라고 해놓고 1~99%탭의 맨 아래쪽에 적의 현재 HP와 적의 최대 HP의 차이를 기억하는 변수를 만들어 놓습니다. (이것은 하나의 변수에 적HP를 대입하고 다른 변수에 최대 HP를 대입한 후 빼주면 됩니다. 절대 이전에 만들어 놓았던 최대HP변수를 사용해서는 안됩니다.) 그리고 나서 100%맨위와 1~99% 맨 위에 "적 HP의 증감"을 이용해 아까 만든 적HP차이 변수만큼 줄어들게 합니다. 물론 전투 불능은 허가해야죠. 이렇게 하면 100%에서 1~99%로 왔다갔다 거리며 계속해서 표시하게 됩니다. 결국 완성한 것입니다.