변수 선언 방식의 차이

 

var는 function-scoped이고, let, const는 block-scoped

 

var : 재선언 가능 

 

let : 변수 재선언 불가능, 재할당 가능 / 선언 후 할당 가능

 

const : 변수 재선언, 변수 재할당 모두 불가능 / 선언과 동시에 할당

 

 

 

참조 : https://velog.io/@bathingape/JavaScript-var-let-const-%EC%B0%A8%EC%9D%B4%EC%A0%90

 

var, let, const 차이점

JavaScript에서 변수 선언 방식인 `var, let, const` 의 차이점에 대해 알아보자. 1. 변수 선언 방식 우선, `var`는 변수 선언 방식에 있어서 큰 단점을 가지고 있다. 변수를 한 번 더 선언했음에도 불구하

velog.io

https://gist.github.com/LeoHeo/7c2a2a6dbcf80becaaa1e61e90091e5d

 

javascript var, let, const 차이점

javascript var, let, const 차이점. GitHub Gist: instantly share code, notes, and snippets.

gist.github.com

 

'study > javascript' 카테고리의 다른 글

[javascript] IIFE / 함수 선언식과 표현식 / 호이스팅  (0) 2022.03.31
[javascript] indexOf 함수  (0) 2022.03.31
[javascript] require 메소드  (0) 2022.03.30

1. Physics.Raycast

레이캐스트는 광선을 쏘아주는 것

레이캐스트를 사용하면 광선에 충돌되는 콜라이더(Collider)에 대한 거리, 위치 등의 자세한 정보를 RaycastHit로 반환 

레이캐스트는 충돌되는 콜라이더를 반환하므로 콜라이더가 없는 게임오브젝트는 충돌을 감지할 수 없음.


Physics.Raycast(Vector3 origin, Vector3 direction, out RaycastHit hitInfo, float maxDistance)

시작점(origin)과 방향(direction)으로 레이를 쏘는 함수

시작점과 방향으로 모든 충돌체에 대해 레이를 쏨.

충돌이 되면 true를 반환하고 RaycastHit로 충돌정보를 넘겨줌.

 

레이캐스트의 광선은 따로 보이지 않으므로 Debug.DrawRay 함수를 사용하여 나타내줌.

        //  ray 시작점, ray 방향*길이, ray 색상, 노출 시간
        Debug.DrawRay(transform.position, transform.forward * maxDistance, Color.red, 0.3f);
            
        // ray 시작점, ray 방향, 충돌 감지 할 RaycastHit, Ray 길이
        if (Physics.Raycast(transform.position, transform.forward, out raycastHit, maxDistance)) 
        {
            raycastHit.transform.GetComponent<MeshRenderer>().material.color = Color.black;
        }

 

 

몬스터에 충돌 했을 경우에만 오브젝트 색상 바꿔주기

 

         // ray 원점, ray 방향, 충돌 감지 할 RaycastHit, Ray 길이
         if (Physics.Raycast(transform.position, transform.forward, out hit, maxDistance)) 
         {
             if (hit.collider.name == "Monster" ) // 충돌한 오브젝트가 Monster라면
             {
                 hit.transform.GetComponent<MeshRenderer>().material.color = Color.black;
                 Debug.Log("몬스터입니다.");
             }
         }

 

 

2. Gizmos(기즈모)

씬뷰에서 설정을 돕기위해 사용.

 

    // 씬 화면에서 보임
    private void OnDrawGizmos()
    {

        Gizmos.color = Color.green;
        Gizmos.DrawRay(transform.position, transform.forward * maxDistance);
    }

 

// 매 프레임마다 호출
void OnDrawGizmos()
{
}

// 오브젝트 선택 시 호출
void OnDrawGizomosSelected()
{
}

 

 

color 다음 프레임에 그려질 기즈모(gizmo)의 색상을 설정합니다.
matrix 기즈모(gizmo)를 그리기 위해 사용되는 기즈모 행렬을 설정합니다.
DrawCube /center/와 /size/를 가지는 박스를 그립니다.
DrawFrustum 현재 Gizmos.matrix를 사용하여 카메라 절두체를 그립니다.
DrawGUITexture 씬에 텍스쳐를 그립니다.
DrawIcon 씬뷰에서 위치에 아이콘을 그립니다.
DrawLine /from/에서 /to/로 향하는 라인을 그립니다.
DrawMesh Draws a mesh.
DrawRay from 에서 from + direction 에 있는 레이를 그립니다.
DrawSphere center, /radius/와 함께 구체를 그립니다.
DrawWireCube center, /size/와 함께 Wireframe Box를 그립니다.
DrawWireMesh Draws a wireframe mesh.
DrawWireSphere center, /radius/와 함께 Wireframe 구체를 그립니다.

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class RayScript : MonoBehaviour
{
    RaycastHit raycastHit; // 레이캐스트에 닿았을 때 hit에 저장
    float maxDistance = 7f; // 레이 길이

    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        if (Input.GetKey(KeyCode.LeftArrow))
        {
            transform.position = new Vector3(transform.position.x - 0.1f, transform.position.y, transform.position.z);
        }
        else if (Input.GetKey(KeyCode.RightArrow))
        {
            transform.position = new Vector3(transform.position.x + 0.1f, transform.position.y, transform.position.z);
        }

        if (Input.GetKey(KeyCode.Space))
        {
            // 캡슐 원점, 캡슐 방향*길이, ray 색상, 노출 시간
            Debug.DrawRay(transform.position, transform.forward * maxDistance, Color.red, 0.3f);
            
            // ray 시작점, ray 방향, 충돌 감지 할 RaycastHit, Ray 길이
            if (Physics.Raycast(transform.position, transform.forward, out raycastHit, maxDistance)) 
            {
                raycastHit.transform.GetComponent<MeshRenderer>().material.color = Color.black;
            }


        }

    }

    // 씬 화면에서 보임
    private void OnDrawGizmos()
    {

        Gizmos.color = Color.green;
        Gizmos.DrawRay(transform.position, transform.forward * maxDistance);
    }
}

ctrl 키를 누른 상태로 이동하면 좌표가 0.25씩 이동 된다.

ctrl + shift + f // 내가 보고 있는 시점으로 이동 가능

ctrl + d // 오브젝트 복제

+ Recent posts