playXP

서브 메뉴

Page. 1 / 271 [내 메뉴에 추가]
글쓰기
작성자 dieiscast
작성일 2015-01-15 23:04:32 KST 조회 1,502
첨부
제목
tps 공중 유닛을 못 잡는 문제 좀 도와주세요.

저번에 LlIiEe 님의 LastWarfare 기반으로 tps 디펜스 만든다던 초보입니다.


저번 문제 해결한 뒤 요즘 시간이 잘 안나서 조금씩조금씩 진행하고 있는데;;;

공중유닛 사격 시험 한다고 뮤탈리스크 쏴 봤더니

뮤탈 본체를 쏠 때는 아무 반응이 없다가

뮤탈 몸통에서 뻗어내려오는 줄이 지형에 맞닿는 지점에 사격을 하니 사격이 먹힙니다.;;;


포럼, 팁, Q&A 등을 검색해서 찾아본 결과 몇몇 제 앞을 지나간 분들이 똑같은 증상을 겪었고

LlIiEe님 본인이 옛날에 해결책을 제시해 주었는데요.

(갤럭시팁의 'LlIiEe'님의 'FPS/TPS 맵을 위한 탄착지점 계산함수',

포럼의 '워크x'님의 게시물인 'LlIiEe님 질문 있습니다', '우리집뒷마당'님의 'FPS(TPS)류 게임 만들때, 공중유닛은...'

등의 게시물 참조 했습니다.)


결론적으로 LlIiEe님이 제시해 준 해결책은

"유닛 적중 높이 계산하는 부분에 유닛의 높이를 추가해라" 였습니다.


제가 참고한 LastWarfare 맵과 조금 다르지만 기본개념은 같은 것 같아서 제 나름대로 해석해 본 결과,

제가 올린 맵의 '목표물 찾기' 함수, 행동 부분의

((플레이어 유닛 카메라 높이(i)-탄환 높이)+플레이어 지형높이))

                                          <=((타겟 지형 높이+인식반경)+(목표물 높이((t_unit의 소유자)(t_unit의 유닛 유형))))

이 그 부분 같은데요...


문제는 제가 보기엔 이미 유닛의 높이가 추가되어 있는 것처럼 보입니다.

그래서 '목표물 높이' 함수에서 저번처럼 값을 찾지를 못하는 것이 아닌가 싶어

플레이어 15(적)을 따로 지정해서 유닛별로 높이를 따로 반환 해 보기도 하였지만

이것도 아무 관련이 없는 것 같습니다;;;


도대체 어디가 어떻게 잘못 되어있는걸까요;;;

고수 분들의 가르침을 바랍니다.

 

 


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

발도장 찍기
아이콘 크더기 (2015-01-15 23:53:43 KST)
0↑ ↓0
센스 이미지
제 생각에 '목표물 높이' 함수 자체가 글러먹은 것 같아요.

함수에 값을 넣어서 결과를 반환시켜야 하잖아요? 각 유닛마다 높이값을 반환시키려고 하시는 것 같은데, 그 유닛이 저글링이든 뮤탈이든 웬 이상한 변수만 특정 값으로 설정되고, 결국엔 1.4가 반환되서 땅바닥에 쏴야 맞게 되는 것 같네요.

각 유닛마다 적절한 높이값을 '반환'시키게 해 보세요. 하지만 이것도 문제가 되는 게, 만약 뮤탈리스크의 높이가 3.75로 잘 설정되어있다 쳐도 플레이어가 뮤탈보다 아래지만 0~3.75의 높이 안에는 들어있는 범위에 공격을 날리면 (예를 들어 뮤탈의 모델은 높이가 2.75~4.75로 직경이 2인 부피를 가진다고 할 때 높이가 1인 지점을 공격한다 치면) 맞게 되지 않을까 염려가 됩니다.

그러니까,
파일포켓 이미지

이런 상황이 발생하게 될까봐 걱정이 되네요.

제가 수학을 정말 싫어해서 제가 틀렸을 수도 있지만요...
아이콘 크더기 (2015-01-15 23:57:03 KST)
0↑ ↓0
센스 이미지
저 상황을 해결하려면, 뮤탈의 높이를 2로 준 다음에 플레이어가 공격한 궤적이 뮤탈의 높이 범위 (지상에서의 뮤탈의 높이 + 뮤탈의 직경) 안에 있는지를 검사하면 되지 않을까 해요.
아이콘 크더기 (2015-01-15 23:59:23 KST)
0↑ ↓0
센스 이미지
그니까 데이터에서 뮤탈의 높이가 아니라 함수에서 반환해주는 값을 말하는 겁니다.
데이터에서의 높이는 지상에서의 높이니까 뮤탈에게 있어 저 식의 값은 3.75 + 2 가 되겠네요.

직경 안에만 있으면 되니까 뮤탈 부피의 최소 높이 ~ 뮤탈 부피의 최대 높이 안에 궤적이 있으면 적중 판정을 내리게 하면 되지 않을까...해요
dieiscast (2015-01-16 19:18:32 KST)
0↑ ↓0
센스 이미지를 등록해 주세요
다시 한번 도움 주셔서 고맙습니다. 크더기님

크더기님이 지적해 주신대로 '목표물 높이' 함수에서 모든 값이 1.4로 반환되어
현재 무슨 유닛이든간에 땅에 쏘아야 피격 판정이 되게 되어있는 것 같습니다.

반환 값 1.4를 바꿔 3.75로 실험해 보니
여전히 뮤탈 본체에서는 판정이 나지 않고 지상보다 조금 높은 곳(아마도 3.75겠지요)에서 피격 판정이 나는 걸 확인했고 무엇보다 저글링의 경우 몸체보다 높은 곳에 대고 사격을 해도 밑의 저글링에 피격 판정이 났습니다.

결국 크더기님이 우려하신대로 단순히 유닛마다 적절한 높이를 설정해 주는 것만으로는 힘들고
적중 범위를 검사하게 만들 필요가 있는 것 같습니다.
dieiscast (2015-01-16 19:35:57 KST)
0↑ ↓0
센스 이미지를 등록해 주세요
대충 구상되는걸로는

전역변수로 '지상에서 유닛까지의 높이'와 '유닛 자체의 높이(유닛 직경)'을 만들고
이것을 특정값으로 반환 시켜주는 함수를 만들고
'목표물 찾기'함수에 '지상에서 유닛까지의 높이(유닛 최소 높이)'에서 '유닛 자체의 높이(유닛 최대 높이)' 안에만 피격 판정을 내리는 조건을 추가하면 되는 걸까요?
아이콘 크더기 (2015-01-16 19:40:35 KST)
0↑ ↓0
센스 이미지
지상에서 유닛까지의 높이 ~ 지상에서 유닛까지의 높이 + 유닛 자체의 높이
가 맞지 않을까 해요.
dieiscast (2015-01-16 19:54:21 KST)
0↑ ↓0
센스 이미지를 등록해 주세요
아 그렇군요.
예를 들자면 3.75< 판정 범위 <3.75+2 이렇게 되는 것이겠죠?
아이콘 크더기 (2015-01-16 20:07:48 KST)
0↑ ↓0
센스 이미지
제 생각은 그래요.

다시 한 번 강조하지만 제가 수학을 못하기 때문에 이 방법이 아닐 수도 있어요 ㅠ
dieiscast (2015-01-16 20:24:43 KST)
0↑ ↓0
센스 이미지를 등록해 주세요
고맙습니다 크더기님 ㅎ

뮤탈만 노리기 위해 임시로 변수를 만들어

타겟 지형 높이+지상에서 유닛 높이(3.75)
<= 피격 범위
<=타겟 지형 높이+지상에서 유닛 높이(3.75)+유닛 직경(2)

범위를 지정해 주니 뮤탈 위,아래 허공은 판정 안 나고 뮤탈 본체만 판정되는 결과가 나왔습니다.
신기하네요 ㅎㅎㅎㅎ
다만 직경이 정확하지 않아 조금씩 몸통에서 벗어나도 피격판정이 나는데
이건 공중 유닛 만들때마다 최적 직경을 노가다로 찾아낼 수 밖에 없을것 같네요.
그리고 이걸 이제 함수로 만들어서 자동으로 변환되게만 만들면 되겠네요.

정말 고맙습니다 ㅎㅎ
아이콘 크더기 (2015-01-16 21:19:56 KST)
0↑ ↓0
센스 이미지
헐? 정말 될 줄은 몰랐는데 다행이네요!

혹시 Team LC에 가입하실 생각은 없으신가요? 여기도 TPS 만드시는 분 계시는데 채팅방에서 같이 정보 공유하면서 제작하면 좋을 것 같아서요.
아이콘 베얼리키드 (2015-01-16 21:39:13 KST)
0↑ ↓0
센스 이미지를 등록해 주세요
여기 TPS 만드는 사람 있습니다
댓글을 등록하려면 로그인 하셔야 합니다. 로그인 하시려면 [여기]를 클릭하십시오.
롤토체스 TFT - 롤체지지 LoLCHESS.GG
소환사의 협곡부터 칼바람, 우르프까지 - 포로지지 PORO.GG
배그 전적검색은 닥지지(DAK.GG)에서 가능합니다
  • (주)플레이엑스피
  • 대표: 윤석재
  • 사업자등록번호: 406-86-00726

© PlayXP Inc. All Rights Reserved.