[Unity] 유니티 오브젝트 터치 시 (레이캐스트 이용해서 판정) 부모, 자식 오브젝트 해제 하기. When touching object( judged using raycast ) Releasing parent and child objects.
유니티 레이캐스트를 이용한 터치 판정 및 부모, 자식 오브젝트 해제하기.
안녕하세요 정보처리마법사 입니다.
이번 포스팅의 주제는 오브젝트를 터치했을 시 부모, 자식 오브젝트로 구성되어있는 오브젝트의 서로간의 해제에 관한 내용입니다.
사용 용도는 게임 진행시 출현하는 터치하면 아이템을 떨어뜨리는다든지의 이벤트를 발생하는 어떤 오브젝트를 구현할 때 등 입니다.
ParentsAndChild 는 빈 GameObject 입니다.
하위에 큐브인 Parents 가 있고, 그 하위에 역시 큐브인 Child 가 있습니다.
Parents 와 Child는 충돌 판정 및 중력의 영향을 받는 등의 기능을 구현해야 하기 때문에
Collider 컴포넌트와 Rigidbody 컴포넌트를 추가했습니다.
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
void Update()
{
if (Input.touchCount > 0)
{
// 싱글 터치.
Touch touch = Input.GetTouch(0);
Vector3 touchPos;
Ray ray;
RaycastHit hit;
switch (touch.phase)
{
case TouchPhase.Began:
// 터치 시작 시.
Debug.Log("터치 시작");
Vector3 touchPosToVector3 = new Vector3(touch.position.x,touch.position.y,100);
touchPos = Camera.main.ScreenToWorldPoint(touchPosToVector3);
ray = Camera.main.ScreenPointToRay(touchPosToVector3);
GameObject childGo = GameObject.Find("Child");
if (Physics.Raycast(ray,out hit, 100))
{
Debug.DrawLine(ray.origin, hit.point, Color.red, 1.5f);
if(hit.collider.tag == "Child")
{
Debug.Log("Child 터치 ! ");
childGo.GetComponent<Rigidbody>().isKinematic = false;
if(childGo.GetComponent<Transform>().parent!=null)
{
childGo.GetComponent<Transform>().parent = null;
}
}
else if(hit.collider.tag == "Parents")
{
Debug.Log("Parents 터치 ! ");
}
}
else
{
Debug.DrawLine(ray.origin,touchPos, Color.yellow, 1.5f);
}
break;
case TouchPhase.Moved:
// 터치 이동 시.
// Debug.Log("터치 이동");
break;
case TouchPhase.Stationary:
// 터치 고정 시.
// Debug.Log("터치 고정");
break;
case TouchPhase.Ended:
// 터치 종료 시. ( 손을 뗐을 시 )
// Debug.Log("터치 종료");
break;
case TouchPhase.Canceled:
// 터치 취소 시. ( 시스템에 의해서 터치가 취소된 경우 (ex: 전화가 왔을 경우 등) )
// Debug.Log("터치 취소");
break;
}
}
}
|
cs |
터치했을 시 레이캐스트를 이용하여 터치 판정(충돌 판정) 을 하여 부모, 자식 오브젝트를 해제 시켰습니다.
그와 동시에 자식 오브젝트의 부모 오브젝트를 해제하여 물체가 아래로 떨어지게 구현하였습니다.
원하는 대로 작동이 잘 됩니다.
이상으로 포스팅을 마칩니다. 감사합니다.
잘 못 된 정보가 있으면 말씀해주세요.
공감버튼 클릭은 작성자에게 큰 힘이 됩니다. 행복한 하루 되세요.
“파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음"