1. 탄환 개선 > 기본 무기의 탄이 잘 맞지 않아 탄속 증가, 탄환 크기 증가로 플레이 중 더 적극적인 교전이 발생하도록 개선하려 함
1) 탄속 빠르게, 탄환 라이프타임 감소
Gun 탄환 스케일 증가
2. 무기 추가
1) 샷건 (아마도 분무기)
> 히트스캔 방식으로 공격 범위 내 적 모두 타격 + 색칠 가능한 오브젝트 색칠
> 이렇게 하면 샷건같이 범위에 전체 색칠하는 느낌이 들지 않을까?
// 샷건의 탄환은 근거리에서 퍼지는 이펙트만 보여주지 실제 물리 충돌로 대미지를 주지 않음
// 물리적인 탄을 여러발 발사하는 것의 부하가 큼 + 여러발 맞거나 맞지 않는 등 무기 성능의 밸런싱이 어려움
// > 대미지는 발사할 때 샷건 무기에서 공격 범위 히트 스캔으로 처리
// 그럼 샷건 탄환 이펙트는 약간... 3D에서 메탈슬러그 샷건처럼 나가게 파티클 이펙트로 처리하면 되지 않을까?
// 머즐 플래시가 곧 탄환 이펙트
히트 스캔 구현
// 공격 범위 내 타겟들만 히트 스캔
Collider[] colliders = Physics.OverlapBox(firePos.position, hitBoxHalfSize, Quaternion.LookRotation(firePos.forward), targetLayer);
일반 레이캐스트와 다르게 박스 형태(캡슐, 구도 있음) 영역 내 targetLayer인 대상만 탐색
그런데, 오버랩이어서 범위 내 여럿에 대해 감지해서 그런지 충돌 지점에 대한 정보를 가지고 있지 않음
해결책 : 해당 콜라이더가 총구로부터 가장 가까운 위치를 찾으면, 직선상으로 가장 가까운 점. 즉, 탄환의 접점으로 취급할 수 있음
Vector3 hitPoint = colliders[i].ClosestPoint(firePos.position);
샷건 에러!
(1) 공격 시 색칠 로그 호출되나 색칠이 안되는 현상 > 아주 가까이 붙으면 색칠이 되기 시작.. > 거리 문제?
공격 범위 내 색칠 가능 오브젝트는 인식한다는 뜻
접점 산출 구문을 아래와 같이 변경하여 해결
Vector3 hitPoint = colliders[i].ClosestPointOnBounds(firePosition); // 색칠 타겟이 메시 콜라이더가 아니라면 해당 구문 사용
> 추가 문제 : 구형, 고리 오브젝트들에 대해서는 제대로 표면을 찾아내지 못함.
> 아무래도 박스캐스트로는 안되겠음.. 적어도 충돌 지점 정보는 있어야 하는데 산출하는 것만으로는 오차 발생 및 예외가 많음
> 방사형으로 쏘게끔 바꿔보자
> 발사 포인트로부터 최대 방사각 내 랜덤한 각도로 샷건 탄환 수만큼 발사(레이캐스트)
> 이펙트와 사정거리를 맞춰서 자연스럽게 흘러가게끔 조치
> 잘 동작
(2) 2p가 색칠 불가 + 플레이어에 대미지 주기 불가
> 느낌 상... isMine 조건문에서 걸리는 듯. 사실 무기는 총알과는 다르게 해당 플레이어 클라이언트 로컬에서 1번만 실행하는데 isMine을 따질 필요가 없음 > 제거한다! > 정상 동작 확인
// 에러 노트
1. 탄이 충돌 시 사라지지 않고 트레일만 바운스?
1) 관찰
2인 플레이 도중 2p의 화면에서 탄이 맞은 자리에서 한번 더 튀는 현상 발생
2p 클라이언트에서는 도탄에 맞은 것처럼 보이나 실제 대미지는 없음
2p 화면에서 1,2P 모두의 탄에서 해당 현상 발생
2) 원인
탄 충돌 시 색칠/대미지 처리 전 if (targetPv.Owner != PhotonNetwork.LocalPlayer) return;
리턴 때문에 충돌 이후 풀로 돌아가지 못하는 게 문제가 아닐까?
3) 해결
if (targetPv.Owner != PhotonNetwork.LocalPlayer) 이 부분이 if(!targetPv.isMine)과 동일한 기능 수행해서 변경
리턴 구문을 없애고 if(targetPv.isMine) 일 때, 색칠/대미지 주기 가능
>> 바운스 현상 없이 정상 동작 확인
'스파르타코딩클럽_Unity개발과정' 카테고리의 다른 글
7/23 최종 프로젝트 작업 일지 (0) | 2025.07.23 |
---|---|
최종 프로젝트 7/21 작업일지 (0) | 2025.07.21 |
최종 프로젝트 7/17 작업노트 (1) | 2025.07.17 |
최종 프로젝트 7/16 작업노트 (1) | 2025.07.16 |
최종 프로젝트 7/15 작업 노트 (0) | 2025.07.15 |