어라라 내 머리속 지우개

  1. 좌표계
    Local 좌표계 : 특정 물체를 기준으로 한 좌표계

World 좌표계 : 게임 세상의 좌표계 (세상을 기준으로)

Viewport 좌표계 : 카메라가 촬영하는 화면의 좌표계 (비율로 표시가 된다. 0.0f ~ 1.0f)
Screen 좌표계 : 카메라가 촬영하는 화면의 좌표계 (픽셀 좌표 수치를 알려준다)

 

Input.mousePosition : 현재 마우스 좌표를 픽셀 좌표(스크린 좌표)로 가져온다
Camera.main.ScreenToViewportPoint(Input.mousePosition : 픽셀 좌표(스크린 좌표)를 비율로서 좌표를 가져온다



2. Raycast

원하는 지점을 기준으로 레이저를 쏴서 가장 먼저 닿는 오브젝트의 정보를 가져온다.
혹은 Physics.RaycastAll 함수를 이용하여 레이저에 닿는 모든 오브젝트의 정보를 가져온다. (배열로)

예) RaycastHit[] 변수명

변수명 = Physics.RaycastAll()

foreach(RaycastHit hit in 변수명)

 

+ Raycast는 무거운 작업이고 신중하게 써야하는 작업

 

  1. 제네릭 타입

public T Load<T>(string path) where T : Object

리소스 폴더에서 리소스를 로드할때 사용하던 코드

T는 제네릭 타입이라 하여 메서드가 실행된 후 반환할 데이터 타입이다
where T : Object를 제네릭 제약 조건이라 하고, T에 들어올 타입을 제한한다.

4. Prefabs의 코드 생성 (프리팹 코드 생성)
Instantiate 함수를 이용한다.

프리팹을 생성 혹은 부모 객체 아래에 붙혀서 생성 할 수 있다.

예)
GameObject prefab = Load<GameObject>($"Prefabs/{path}");
Object.Instantiate(prefab)

5. 문자열 보간 $ { }
$"문자열 : { 값 } " 을 이용하여 직관적으로 코드를 작성 할 수 있다.

  1. Nested Prefab
    Prefab에 Prefab을 붙여서 새로운 Prefab을 만드는것

  2. 3D 실제 거리를 구할때 (magnitude)

Mathf.Sqrt를 이용하여 어떤 수의 제곱인지 알 수 있다

(x* x + y * y + z * z)

 

  1. 3D 방향을 구하고 싶을때 (normalized)

x / magnitude, y / magnitude, z / magnitude

 

  1. 마우스 클릭 (Input.GetMouseButtonDown(0))

 마우스를 클릭하면 실행

 

  1. 마우스 위치
    Vector3 mousPos = Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, y, z)

Vector3 dir = mousPos - Camara.main.transform.position

dir = dir.normalized
월드 좌표계에서 마우스의 위치를 구한 뒤 방향을 구하고 크기를 1로 변환

 
의 기능을 모두 가진
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition)

ray.direction 방향 정보도 가지고 있다

Physics.Raycast(ray, out hit)

 
10. 충돌 지점에 프리팹 생성

 Raycast를 이용하여 충돌하는 오브젝트의 정보를 알 수 있다면, 충돌 지점에 대한 정보도 있지 않을까?
그 지점에 내가 원하는 프리팹을 생성할 수도 있지 않을까? 라는 생각이 문득 들어서 찾아봤다
RaycastHit hit
Physics.Raycast(ray, out hit, 100.0f)
hit.point가 충돌 지점 좌표였다 이걸 사용해 내가 원하는 프리팹을
Instantiate(prefeb, hit.point, Quaternion.identity)로 생성함


 

 

 

댓글을 작성해보세요.

채널톡 아이콘