Ray 사용법!
- 필요한 변수
float distance; -> 레이의 길이
RaycastHit rayHit; -> Ray가 맞았다는걸 알려주는 변수
Ray ray; -> 사용될 레이 변수
void Start ()
{
ray = new Ray(); -> new를 이용하여 레이를 하나 생성합니다.
ray.origin = this.transform.position; -> 레이위치를 사용될 오브젝트위치에 적용합니다.
ray.direction = this.transform.forward; -> 레이 방향을 사용될 오브젝트 방향으로 초기화 해줍니다.
}
팁 // 만약 실시간으로 값을 받고 싶다면 ray.origin과 ray.direction을 Update 메소드에 넣어주시면 됩니다.
레이와 오브젝트의 충돌함수는 아래와 같습니다.
if (Physics.Raycast(ray.origin, ray.direction, out rayHit, distance))
// 순서대로 레이의시작위치 / 레이의 방향 / 레이충돌 반환 / 레이 길이값
{
// 해당 위치에서 조건에 대한 코드를 작성하시면 됩니다.
Debug.Log(rayHit.collider.gameObject.name); // 충돌된 오브젝트 이름 디버그 로그로 출력
}
로그 확인 방법은 유니티에서 ctrl + shift + C 를 누르시면 나옵니다.
자 그렇다면 레이가 잘 발사되고 있는지 확인을 해보고 싶으시죠?
그러면 void OnDrawGizmos() 메소드를 이용하여 렌더를 해줍니다.
void OnDrawGizmos()
{
Debug.DrawRay(ray.origin, ray.direction * distance, Color.red);
// 이와같이 Debug로 그려주시면 실제 게임에서는 표시되지 않고 디버그 모드에서만 설정된
// 레드컬러로 레이가 발사 되는것을 확인 하실 수 있습니다.
아래 레이가 적용된 예시 화면
'유니티(unity)' 카테고리의 다른 글
유니티(unity) 게임오브젝트(GameObject)와 컴포넌트(Component) 관계 및 사용법 (0) | 2017.12.07 |
---|---|
유니티(unity) Awake(), DontDestroyOnLoad() (0) | 2017.12.07 |
유니티(unity) Time.time.ToString 소수점 조절하기 (2) | 2017.12.05 |
유니티(unity) Update, FixedUpdate, LateUpdate 차이점 (0) | 2017.12.04 |
유니티(unity) 스크립트 에디터(script editor) 변경하기 (0) | 2017.12.01 |