박하의 나날

(07.31)raycast_Picking

프로그래밍/Unity

raycast를 이용한 picking.

마우스 L 클릭마다 큐브가 점프하도록.

 

노랑노랑 큐브들. 버터조각같네 ㅋㅋ

 

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
using UnityEngine;
using System.Collections;
 
public class pickingBasic : MonoBehaviour {
    void Update()
    {
        if (Input.GetMouseButton(0))
        {
            RaycastHit hit;
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
 
            if (Physics.Raycast(ray, out hit, Mathf.Infinity))
            {
                if (hit.collider.gameObject.name == "Ground"return;
                if (!hit.collider.gameObject.GetComponent<Rigidbody>())
                {
                    hit.collider.gameObject.AddComponent<Rigidbody>();
                }
                //hit.collider.gameObject.GetComponent<Rigidbody>().AddForce(Camera.main.transform.up*1000f);
                //카메라 좌표기준의 up이라서 카메라가 회전되어 있으면 카메라의 좌표계도 회전되어 포물선으로 날아간다
                hit.collider.gameObject.GetComponent<Rigidbody>().AddForce(Vector3.up * 1000f);
                //월드 좌표계 기준
            }
        }
    }
}
 
cs

Ray ray = 카메라 component.

ScreenPointToRay는

카메라가 보는 방향으로 선을 주욱 보내서 물체에 통과시키는데, 그 선이 물체가 움직이는 중심이다.

카메라가 비스듬히 회전되어 있으면 물체도 비스듬하게 간다.

카메라가 보는방향 = 물체가 보는방향.

 

ScreenPointToRay : Returns a ray going from camera through a screen point.

화면 지점을 통해 카메라에서 가는 선을 돌려줍니다.

ScreenToViewportPoint : Transforms position from screen space into viewport space.

뷰포트 공간으로 화면공간에서 위치를 변환합니다.

ScreenToWorldPoint : Transforms positoin from screen space into world space.

세계 좌표 공간으로 화면 공간에서 위치를 변환합니다.

이상 유니티공홈.

https://docs.unity3d.com/ScriptReference/Camera.html

 

큐브에 rigidbody를 추가했다면 15~18은 생략가능하다.

주석처리된 부분은 충돌체크시 힘을 가하는 부분을 카메라 좌표기준으로 한것이고,

그 아래는 월드좌표계 기준으로 힘을 가하는 것이다.

주석부분은 살리고 15~18, 21 주석처리하면 카메라 기준스크립트. 

 

 

 

클릭을 하면 할수록 올라가는 높이가 점점 높아질수 있는데,

이는 떨어질때 받은힘+제한에 의해 속도가 붙어서.

'프로그래밍 > Unity' 카테고리의 다른 글

NGUI_폰트적용  (0) 2017.04.06
NGUI_아틀라스 생성  (0) 2017.04.06
(07.27)Quaternion_centreeGun  (0) 2017.03.20
(07.27)Quaternion_유도미사일, 쫓아다니는 카메라  (0) 2017.03.20
(07.23)mecanim, animator  (0) 2017.03.20