playXP

서브 메뉴

Page. 1 / 21 [내 메뉴에 추가]
글쓰기
작성자 LlIiEe
작성일 2010-08-06 21:44:43 KST 조회 8,283
첨부
  • 003.jpg (272 KB) - 다운로드: 27
제목
FPS/TPS 맵을 위한 탄착지점 계산 함수
파일포켓 이미지

음.. 맵자료실에 올려놨던 TPS맵에서 탄착지점 계산이 너무 허접해서..

안돌아가는 머리 굴려가며 연구 끝에 완성된 함수입니다.

 

이전에 만든건 지도높이가 다르면 탄착지점 계산이 안되는 오류가 있었는데,

이번에는 어떤 지형, 어떤 장애물이 있어도 탄착지점 계산을 완벽하게 이루에 내는것을 볼 수 있습니다.

(심지어 하늘에다가 총질을 할 수도 있습니다... 물론 최대 사거리 까지만..)

 

(유튜브 클릭해서 720p로 보는것을 권장...)

 

원리를 설명드리자면..

일단 삼각함수를 기본 베이스로 하구요..

 

 

[지도의 높이 0]에서 [카메라의 높이]까지를 "a",

카메라의 Y축 회전을 "b"라고 하면

플레이어 유닛에서 해당 지점까지의 거리가 "a/tan(b)"가 되겠죠..

 

처음에 만든 TPS맵이 이 방법을 썼는데, 지도의 높이 변위 때문에 정확한 지점이 계산이 안되더라구요..

쏘는 위치와 맞는 위치의 맵 높이가 다르면 총알이 엉뚱한데 박힌다는거죠..

 

그래서 역으로 생각한게

반복문을 [플레이어 유닛의 반경]에서 최대 사거리까지 0.01씩 증가하고

그 증가변수를 "a"

카메라의 Y축 회전을 "b"라고 하면

"a*tan(b)"는 플레이어가 보는 각도로 탄환이 0.01거리 만큼 이동했을 때 "탄환의 높이"가 됩니다.

 

이를 이용해서 탄환이 높이가 그 지점에서의 높이와 같이지면

-> "바닥이나 벽에 탄환이 맞았다"가 되는거죠.

최대 사거리 까지 반복을 했는데, 위와 같은 경우가 발생하지 않는다면

그때의 탄환 높이를 반환해서 공중에 탄환이 터지는 모습을 보여줄 수 있습니다.

 

아, 물론 연산은 지역변수로만 행해지며, 함수가 끝나면 지역변수는 사라집니다..

또한 오브젝트를 이용한게 아니라서 맵에 오브젝트가 많아져서 발생하는 렉을 최소화 했습니다.

약간 걱정되는건, 데이터 연산량이 좀 많다는거..

 

실제로 8P멀티 맵을 만들어 지인분들과 테스트를 해본 후,

결과를 봐서.. 여유롭게 플레이가 되면 맵파일을 공개 해보도록 하겟습니다.

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

아이콘 Guetelperr (2010-08-06 22:38:19 KST)
0↑ ↓0
센스 이미지
이미 클베때 지면 각도, 발사각, 발사세기, 바람의 XY방향, 바람의 세기에 따른 탄도의 휘어짐에 탄착지점에 땅이 파이는 효과까지 만들어봤습니다.
저는 렉때문에 포기했지만 이쪽분은 최대 8명에 미사일을 하나씩만 쏘게될것같으니 선전을 기원하겠습니다.
게다가 저는 http://tvpot.daum.net/clip/ClipViewByVid.do?vid=P5D1Bv2EKj0$ 이런 커스텀 ui까지 쓰느라 렉이 더 심했죠..
아이콘 있나없나 (2010-08-07 10:58:04 KST)
0↑ ↓0
센스 이미지
ㄴ UI 돋네요 ㄷㄷ....
스타2 (2010-08-07 16:28:51 KST) - 211.33.xxx.150
0↑ ↓0
센스 이미지를 등록해 주세요
Gueteperr// 저 UI들은 전부 대화상자로 만드는건가요?
아이콘 Guetelperr (2010-08-07 22:40:05 KST)
0↑ ↓0
센스 이미지
ㄴ그렇게 간단히 설명드릴 수 있다면 얼마나 좋을까요..
한가지 확실한건 대화상자"도" 사용합니다.
김노숙 (2010-08-08 12:34:43 KST)
0↑ ↓0
센스 이미지를 등록해 주세요
이런 ㅅㅂ
Jakovskii (2011-09-01 18:04:22 KST)
0↑ ↓0
센스 이미지를 등록해 주세요
맵 공유좀 부탁드려요 ㅠㅠ
댓글을 등록하려면 로그인 하셔야 합니다. 로그인 하시려면 [여기]를 클릭하십시오.
롤토체스 TFT - 롤체지지 LoLCHESS.GG
소환사의 협곡부터 칼바람, 우르프까지 - 포로지지 PORO.GG
배그 전적검색은 닥지지(DAK.GG)에서 가능합니다
  • (주)플레이엑스피
  • 대표: 윤석재
  • 사업자등록번호: 406-86-00726

© PlayXP Inc. All Rights Reserved.