본문 바로가기
[ Unity ]/- 유니티 실습

유니티 2D RayCast, ShotGun RayCast

by MRG 2024. 9. 24.
728x90
반응형

 

 

▣ 코드설명:
Update에서 rayDirection을 업데이트:
Update 함수에서 mousePosition과 rayDirection을 매 프레임마다 업데이트하도록 했습니다. 

마우스의 위치를 기준으로 총구(bulletPos)에서 마우스 방향으로의 벡터를 계산하여 저장합니다.


총구 회전 로직:
마우스 위치에 따라 총구가 회전하도록 rotationZ을 계산하여 transform.rotation에 적용했습니다. 이제 총구가 마우스를 향하게 됩니다.


디버그 시각화:
Debug.DrawRay로 레이캐스트를 시각적으로 확인할 수 있도록 했습니다. 레이캐스트가 마우스 방향으로 올바르게 나가는지 확인할 수 있습니다.

 

 

 

 

 

▣ 코드설명:

샷건 발사 구현:
pelletCount: 샷건 발사 시 나가는 탄환의 개수를 의미합니다. 기본값으로 10개의 탄환이 발사됩니다.
spreadAngle: 탄환이 퍼져 나가는 각도를 설정합니다. 예를 들어, spreadAngle = 30f이면 30도 범위 내에서 탄환이 퍼져 

나갑니다.


FireShotgun() 함수:
여러 개의 Raycast를 탄환의 개수만큼 쏘는 함수입니다.
랜덤 각도를 계산하여 탄환이 퍼져 나가는 방향을 설정하고, 각 탄환이 독립적으로 Raycast를 통해 충돌체를 탐지합니다.


Quaternion.Euler():
주어진 spreadAngle 범위 내에서 랜덤 한 각도로 레이 방향을 회전시켜 퍼지는 효과를 구현합니다.

 


밀어내는 힘(knockbackForce) 추가:
knockbackForce 변수를 추가하여, 샷건 탄환이 충돌한 오브젝트를 밀어내는 힘의 크기를 설정했습니다. 

기본값은 10f로 설정했습니다.


충돌한 오브젝트 밀어내기:
FireShotgun() 함수에서 샷건 탄환이 Raycast로 충돌한 오브젝트를 탐지한 후, 해당 오브젝트에 Rigidbody2D 컴포넌트가 있는지 확인합니다.
만약 Rigidbody2D가 있다면, AddForce()를 사용하여 샷건 발사 위치에서 충돌한 오브젝트로 향하는 방향으로 힘을 가해 오브젝트를 밀어냅니다.
ForceMode2D.Impulse를 사용하여 순간적으로 큰 힘을 가하는 충격을 줍니다.


밀어내는 방향:
충돌한 오브젝트를 샷건이 발사된 위치에서 충돌한 오브젝트 방향으로 밀어냅니다. 즉, 탄환이 날아간 방향으로 오브젝트가 밀리게 됩니다.

728x90
반응형

댓글