관리 메뉴

도드넷

유니티 투사체 Raycast(레이케스트) 총알 스크립트 만드는법! + 보너스 transform.LookAt 본문

창고/게임 개발 [Hidden]

유니티 투사체 Raycast(레이케스트) 총알 스크립트 만드는법! + 보너스 transform.LookAt

도드! 2022. 8. 10. 10:50
반응형

 

 

유니티 레이케스트(Raycast) 투사체 총알 Projectile 만드는법.

 

 

#0 기본적인 충돌과 이동 구현시 투사체에 Rigidbody 또는 Collider 를 사용하지 않는다.

- 유니티 자체 피직스를 빠른 이동시 신뢰도가 매우 떨어진다.

 

#1 투사체의 이동, 회전, 충돌은 Update 문을 이용한다.

 

#2 Update 문은 두 가지 파트로 구성되어 있다.

 

1. [이동]

2. [Raycast를 이용한 충돌 검사]

 

#3 [이동] 파트 

유니티 C# 투사체의 이동은 아래와 같이 구현한다.

현재위치 = transform.position;

새로운 위치 = 현재 위치 + (방향 * 속도 * Time.deltaTime)

transform.position = 새로운 위치;

 

* transform.up?

- 유니티 에디터상 녹색 화살(↑)에 해당된다.

 

* Time.deltaTime 를 사용하는 이유?

- Time.deltaTime 는 프레임과 프레임 사이에 걸린 시간이다.

Update 함수는 프레임마다 사용되므로 새로운 위치값을 결정할때 Time.deltaTime 를 곱해주면

프레임과 프레임간에 얼마나 시간이 걸리든 보정된 일정한 값을 가지게 된다. 

 

#4 [Raycast를 이용한 충돌 검사] 파트

유니티 레이케스크 Raycast 를 이용한 투사체 충돌검사하는 방법이다.

현재 위치, 방향, 거리, 레이어마스크가 필요하다.

이때 거리는 3번의 [이동] 파트에서 정의한 현재위치, 나중위치를 이용한다.

 

* 방향 Vector?

- transform.up : 녹색 화살표 (Y)

- transform.foward : 파란 화살표 (Z)

- transform.right : 빨간 화살표 (X)

 

#5 투사체의 기본 컨셉트

♥ 선 이동후 충돌 검사.

자신이 이동한 거리만큼 충돌검사를 해서 그 사이에 무언가 있으면 충돌로 판명한다.

 

#6 투사체 Look At, 원하는 방향을 보게 만들기.

 transform.up 방향으로 이동하고 그에 따라 충돌을 감지하는 투사체를 만들었다.

이제 투사체가 총구의 방향 또는 목표물 방향등 원하는 방향으로 돌아서, 회전해서 이동하게 하고 싶으면

아래 스크립트를 이용해서 회전을 바꿔주면 된다. (경고 :: transform.up 방향이동 기준)

지속적으로 추격하고 싶다면 [이동] 파트에 넣어서 함께 이동하게 하면 되겠고 한번만 방향을 설정하면 되는 경우 시작 함수에 넣으면 될것같다.

 

오른쪽으로 이동

왼쪽으로 이동

 

( 2D, transform.up(녹색 화살표) ) - 2D Z축 Only 회전 

( 3D, transform.up(녹색  화살표) )

( ( 3D, transfrom.forward(파란색 화살표)

 

반응형
Comments