playXP

서브 메뉴

Page. 1 / 271 [내 메뉴에 추가]
글쓰기
작성자 dieiscast
작성일 2015-01-05 23:02:00 KST 조회 1,852
첨부
제목
초보 맵퍼입니다. 도와주세요.

tps 맵 만들어 보고자 하는 초보입니다.

첨부한 맵은 제가 만들고 있는 맵인데... TPS 형식이고,

현재 배틀넷 아케이드에서 볼 수 있는 '테란 디펜스 워즈'를

프로토스 버젼으로 구상해 보는 것이 최종 목적입니다.


기본 베이스를 맵 자료실의 LlIiEe님이 옛날에 올리신 TheLsatWarfare를 베이스로 만들고 있습니다.

조금씩 공부하면서 보니까 트리거 구동방식이나 변수 설정같은 것들은 이해가 되는데...

문돌이 출신인 저에게는 목표지점을 찾는 함수 부분은 도대체 무슨 말인지 이해가 되지 않아

베이스 맵에서 그 함수 부분과 그에 따른 공격부분을 그대로 가져와 쓰고 있는데...


문서 실험을 시작하여 적을 공격해 보면...

'scri:'FUCTION'에서 트리거 오류:접근 시도 중인 요소가 배열의 마지막을 지난 요소입니다.'

라는 문장과 유닛이 적 앞에서 버벅거리는 현상이 계속 일어나고 있습니다....

도대체 뭐가 문제일까요?;;;


TheLastWarfare를 사용해 맵을 만들어보신 고수 분들의 도움을 구합니다.

지속적인 허위 신고시 신고자가 제재를 받을 수 있습니다.
신고 사유를 입력하십시오:

발도장 찍기
아이콘 크더기 (2015-01-06 22:20:11 KST)
1↑ ↓0
센스 이미지
정말 어려운 트리거군요.
TheLastWarfare를 사용해 맵을 만들어보진 않았지만 뭐라도 던져볼게요.

AttackBtnDown - PlayerAttack - TargetFind(+TargetHeight)
이 순서로 트리거가 실행되는데요.

TargetHeight 함수에서 (IsPlayerInit == 참) 을 검사하는데
저 변수가 0~14까지밖에 없어요. 그 상태에서 적(저는 플레이어 15를 뽑아봄)을 공격해보니 적 플레이어는 15고, 변수에 할당이 되지 않아서 에러를 뿜는 것 같네요. IsPlayerInit[15]는 존재 자체가 없는데, 그걸 검사하고 있다는 거죠. 그렇다고 15 플레이어에 대한 다른 처리가 있는 것도 아니구요.

보통 "접근 시도 중인 뭐시기뭐시기"는 변수의 할당과 관련된 문제가 굉장히 많아요.
(위 같은 경우는 14까지만 있는 변수에 15번째 배열을 시도한다던가)
그러니 저런 오류가 뜰 땐 변수의 크기 등을 의심해보시면 됩니다.
dieiscast (2015-01-06 23:21:28 KST)
1↑ ↓0
센스 이미지를 등록해 주세요
크더기님 정말 고맙습니다. 덕분에 해결 됐네요. ^^
역시 제대로 모르고 하니 변수 문제에서 또 바보짓을 했군요.
정말 고맙습니다. ㅎ
이니안 (2015-01-07 12:26:56 KST) - 120.147.xxx.226
1↑ ↓0
센스 이미지를 등록해 주세요
유닛이 적 앞에서 버벅거리는건 "조작 - 움직임" 폴더에서 '플레이어 움직임' 행동정의에서
키를 누를때 일정 방향으로 움직이게 하는 지시 행동의 마지막에 기존 지시 바꾸기를
기존 지시 이후로 하시면 되시는데요
하지만 그대로 두게 되면 다른 방향키를 눌렀음에도 지시변경이 모든 지시를 이행 후 발동하게 될 것을 예측할 수 있습니다.
그러니 키를 떼거나 누를때 마다 유닛 행동을 '기존 지시 바꾸기' 지시 명령을 정지 또는 유닛이 멈추는 행위를 뜻하는 것으로 바꾸거나
거리 이동 0으로 설정하시면 될 것같습니다만
키를 떼거나 누를때 마다 설정하려면 아마 트리거좀 다시 손보셔야 하실듯 하네요

'조작 발동'트리거에서 마지막에 유저가 보는 화면방향으로 유닛 향하기도 없애시는게 좋을듯하네요
이건 움직이지 않았을경우 즉 모든 WASD키 눌림이 아닐경우 유저가 보는 화면 방향으로 이동하기로 변경하시면 될 듯 합니다.

'조작 키 누르기/떼기' 트리거 안에 둘다 맨 맽에 마찬가지로 방향 보도록 하는 트리거가 있는데요
그냥 둘다 없애고
'조작 발동'트리거에서 조건문을 하나 만들어 WASD모든 키가 거짓상태일경우 발동으로 하시면 좋을 거라고 생각됩니다.

음 이건 알고가셨으면 해서 팁이랄까요
'행동정의'의 매개변수를 변수로 연결하고 행동을 변수로 연결하셨더군요
행동정의 안에서 만드는 행동들은 매개변수로 바로 연결 할 수 있습니다.

예를 들면 [플레이어 움직임]의 행동정의 매개변수가 '조작 발동'에서 설정하신 것을
행동정의 [플레이어 움직임]안에서 지역 변수를 만들어 행동으로 매개변수가 지역변수로 연결하게 하셨습니다.

행동정의 안에서 만드는 행동들은 바로 매개변수로 연결할수 있습니다.
(예 [플레이어 움직임] 행동정의 안에 유닛의 지시 전달 행동을 보시면
'j'를 매개 변수 '유닛'으로 바로 연결하시면 됩니다.
dieiscast (2015-01-08 13:51:55 KST)
1↑ ↓0
센스 이미지를 등록해 주세요
이니안님 조언 고맙습니다.
우선 조언하신대로 조작 키 누르기/떼기의 중복되는 방향 향하기를 지우고 조작 발동에서의 if/then 행동으로 줄이는 걸 적용 했습니다. 똑같은 결과가 나오는 것 같습니다. 고맙습니다 ㅎ

그리고 유닛이 적 앞에서 우물쭈물? 버벅 거리는 것에 대해서는 글을 올린 뒤 베이스 맵과 대조해 보면서 알아 본 결과 유닛 데이터 값에 '응답'과 '무기'를 지워 버리면 해결이 되더군요.
하지만 이럴 경우, 인공지능의 같은 유형의 유닛들에게도 이 사항이 적용되어 적이 다가와서 공격을 해도 가만히 서서 샌드백이 되는 결과가 나왔습니다. 해서 유닛을 복제하여 따로 플레이어용 유닛을 만들어 위 사항을 적용하는 것으로 해결 했습니다. 아무래도 이 쪽이 플레이어 전용 유닛을 영웅 유닛으로 취급하고 AI유닛들에게 다른 명령을 내리는 등, 제가 생각하는 형태에 더 맞을 것 같습니다.

그리고 마지막의 팁에 대해서는... 음;;;
글로는 어느 정도 이해가 가는데;;; 아무래도 연습을 좀 해 봐야 적용까지 가능할 것 같습니다.;;

조언 고맙습니다. ㅎ
댓글을 등록하려면 로그인 하셔야 합니다. 로그인 하시려면 [여기]를 클릭하십시오.
롤토체스 TFT - 롤체지지 LoLCHESS.GG
소환사의 협곡부터 칼바람, 우르프까지 - 포로지지 PORO.GG
배그 전적검색은 닥지지(DAK.GG)에서 가능합니다
  • (주)플레이엑스피
  • 대표: 윤석재
  • 사업자등록번호: 406-86-00726

© PlayXP Inc. All Rights Reserved.