개인 자료란 (JE)

  서버 커뮤니티

Profile 브금소리BGMSound 대표칭호 없음
Profile

스크립트 기초

[ 스크립트 기본강좌 ( 11 ) ] 투사체 헤드샷 판정

2020.07.07 조회 수 1523 추천 수 0

안녕하세요, 브금입니다!

오늘 적을 강좌는 상당히 유용할 것이라 믿습니다.

바로 "투사체 헤드샷 판정" 강좌입니다.

여기서 말하는 투사체는 1.12.2 기준 맞았을 때 피격 판정이 뜨는 눈덩이, 계란, 화살 등을 의미합니다.


원리부터 설명하겠습니다.

피격 판정을 인식하는 이벤트는 on damage: 입니다

이 이벤트에서 투사체에 맞았을 때 y좌표는 y coordinate of projectile 이며,

그 때 맞은 사람의 y 좌표는 y coordinate of victim 로 사용할 수 있습니다.

구문을 깔끔하게 적기 위해 임시변수에 각각 해당 두개의 좌표를 담으면, ( 저는 {_head1} , {_head2} 로 저장했습니다 )

좌표의 차를 이용하여 맞은 부위의 결과값을 출력해낼 수 있습니다.


이를 이용하여 머리 / 몸통 / 다리 / 발 등으로 오직 y좌표로만 4개의 타격 부위를 나눌 수 있으며,

응용함에 따라 네 부위의 데미지 설정도 다르게 할 수 있습니다.


주석과 함께 해당 구문을 보겠습니다.

on damage: #플레이어가 데미지를 입었을 때

    set {_head1} to y coordinate of projectile #{_head1}에 투사체 y좌표 저장

    set {_head2} to y coordinate of victim #{_head2}에 피격자 y좌표 저장

    set {_n.%attacker%} to "몸샷" #기본 출력을 몸통으로 설정

    if {_head1}-{_head2} is bigger than 1.5: #만약 {_head1}-{_head2}가 1.5 보다 크다면

        set {_n.%attacker%} to "헤드샷 " #피격 판정을 "헤드샷"으로 설정

    if {_head1}-{_head2} is smaller than 0.6: #만약 {_head1}-{_head2}가 0.6 보다 작다면

        set {_n.%attacker%} to "발샷" #피격 판정을 "발샷"으로 설정

    send "&f%{_n.%attacker%}%" to attacker #출력 구문


감사합니다!

4개의 댓글

스크립터브혼
2020.07.10

마인크래프트 시간단위가 0.05초라서 그만큼의 오차가 생깁니다.

location of projectile는 충돌 순간의 좌표가 아닌 틱단위 위치좌표를 반환하기 때문입니다.

그래서 두 플레이어가 서로 수직에 가깝게 위치 할 수록 잘못된 결과를 가져옵니다.

DDang_
2021.07.14
@스크립터브혼

ㄷㄷ 이건 몰랐네요 그럼 플러그인 eyelocation 을 쓰는게 맞을까요?

스크립터브혼
2021.07.14
@DDang_

시간차로 인한 오차이기 때문에 클라이언트에서 충돌위치를 반환해주어야만 오차없이 구현할 수 있을겁니다.

단순히 충돌했는지만으로는 0.05초의 오차를 해결할 수 없습니다.

 

저도 벡터를 사용해서 0.05초 간의  두궤적에 따라 발생할 수 있는 충돌에 대해서 판단해 봤는데

어쨋든 활은 궤적에 따라 움직이지만 플레이어는 그렇지 않기 때문에 역시나 오차는 생깁니다.

 

또한 충돌 판정에 있어서 구의 충돌은 간단히 구현되지만, 육면체의 충돌은 상당히 복잡합니다.

특히 몸통의 경우 얼굴과는 다르게 방향값을 알수가 없습니다. 얼굴은 플레이어가 바라보는 방향을 그대로 보지만, 몸통은 해드의 방향성에 따라 적당히 따라가는 정도라서 팔의 충돌을 구현하는것은 불가능에 가깝습니다.

 

이동하는 플레이어를 수직에 가까운 아래에서 쏘는 경우 발에 맞을때도 있고, 손에 맞을 때도 있고 가끔은 머리에도 맞는데 이것을 판단하는게 상당히 난해합니다. 이 정도까지 실험하다가 그냥 충돌 판정을 구현하는걸 포기했습니다.
활을 아주 쎄게 쏠 경우 0.05초간 활이 날아갈 수 있는 블록이 5블록이 넘습니다. 이 오차를 잡아내는건 쉽지 않아요.

DDang_
2021.07.18
@스크립터브혼

와 그래서 투사체 날려서 헤드 판정 내는 플러그인이나 맞은 곳 알아내는 로직 짰을 때 위에서 아래로 쏠 때는 무조건 헤드가 나오는게 아니었군요

뉴스 및 창작물
/files/thumbnails/483/916/003/262x150.crop.jpg?20241127115329

레드스톤

[노트블럭 커버] 뉴진스 - ETA 2

노트블럭전문가

2024-11-27

0

/files/thumbnails/150/925/003/262x150.crop.jpg?20241123005717

건축

응답하라 1988 ?

팀뉴일리시

2024-11-23

4

/files/thumbnails/761/908/003/262x150.crop.jpg?20241025153749

건축

서울 숭례문(崇禮門) 6

KHC

2024-10-25

2

/files/thumbnails/578/899/003/262x150.crop.jpg?20241010142350

건축

경주 월정교 1

KHC

2024-10-10

2

/files/thumbnails/219/899/003/262x150.crop.jpg?20241009200950

건축

송전탑+도시 2

dbasd12

2024-10-09

2