본문 바로가기

Unity

[Unity] 플레이어가 바라보는 방향으로 Ray를 만들어보자

728x90

npc와 대화하는 것을 만들기 위해서 플레이어가 바라보는 방향으로 RayCast를 만들어보겠다. 수평, 수직 방향 이동과 동일한 프로젝트에서 진행되기 때문에 코드를 이어가겠다.

 

1
2
3
4
5
6
7
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
public class Player : MonoBehaviour
{
    Vector3 playerDir;

 

수평, 수직 방향 이동 플레이어 스크립트에서 추가되는 것은 playerDir이다.

 

  • playerDir - 플레이어가 바라보는 방향에 대한 정보를 저장할 변수이다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
void Update()
    {
        hInput = Input.GetAxisRaw("Horizontal");
        vInput = Input.GetAxisRaw("Vertical");
 
        if (hInput == 0 && vInput != 0)
        {
            isHorizontalMove = false;
            if (vInput == 1)
                playerDir = Vector3.up;
            else if (vInput == -1)
                playerDir = Vector3.down;
        }    
        else
        {
            isHorizontalMove = true;
            if (hInput == 1)
                playerDir = Vector3.right;
            else if (hInput == -1)
                playerDir = Vector3.left;
        }
    }

 

수평, 수직 방향 이동에서 상, 하 이동과 좌, 우 방향에 관한 조건문을 추가해주고, 그 방향에 맞게 playerDir의 값을 지정해주었다.

 

1
2
3
4
5
6
  void FixedUpdate()
    {
        Debug.DrawRay(rigid.position, playerDir * 1.0f, Color.red);
        RaycastHit2D raycast = Physics2D.Raycast(rigid.position, playerDir * 1.0f);
    }
}

 

마지막으로 플레이어가 있는 위치에서 DrawRay를 사용하여 Ray를 그려준다.

 

결과 화면

728x90