안녕하세요 오늘은 저번 시간에 이어 AR Foundation을 이용하여 객체를 생성하고 드래그를 통해 움직이는 방법에 대하여 포스팅 하겠습니다.
먼저 객체 생성하는 방법은 아래의 링크를 통해 확인해주세요.
https://simpleneed.tistory.com/50
AR Foundation을 통해 객체를 생성했다면 다음은 객체를 터치하면 인식을 하고, 드래그를 통하여 움직이면 해결입니다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.XR.ARFoundation;
using UnityEngine.XR.ARSubsystems;
public class TouchManager : MonoBehaviour
{
//생성할 객체
private GameObject placeObject;
private ARRaycastManager raycastMgr;
private List<ARRaycastHit> hits = new List<ARRaycastHit>();
private bool Touched = false;
private GameObject SelectedObj;
[SerializeField] private Camera arCamera;
void Start() {
// 생성할 큐브를 할당
placeObject = GameObject.CreatePrimitive(PrimitiveType.Cube);
// 큐브의 크기를 설정
placeObject.transform.localScale = Vector3.one * 0.05f;
// AR Raycast Manager 추출
raycastMgr = GetComponent<ARRaycastManager>();
}
void Update() {
if (Input.touchCount == 0) return;
Touch touch = Input.GetTouch(0);
//터치 시작시
if (touch.phase == TouchPhase.Began) {
Ray ray;
RaycastHit hitobj;
ray = arCamera.ScreenPointToRay(touch.position);
//Ray를 통한 오브젝트 인식
if(Physics.Raycast(ray, out hitobj))
{
//터치한 곳에 오브젝트 이름이 Cube를 포함하면
if (hitobj.collider.name.Contains("Cube"))
{
//그 오브젝트를 SelectObj에 놓는다 //터치하고 있는다
SelectedObj = hitobj.collider.gameObject;
Touched = true;
}
//아니면 오브젝트 선택 아닐 시 생성
else
{
if (raycastMgr.Raycast(touch.position, hits, TrackableType.PlaneWithinPolygon))
{
Instantiate(placeObject, hits[0].pose.position, hits[0].pose.rotation);
}
}
}
}
//터치가 끝나면 터치 끝.
if(touch.phase == TouchPhase.Ended)
{
Touched = false;
}
if (raycastMgr.Raycast(touch.position, hits, TrackableType.PlaneWithinPolygon))
{
//터치 시 해당 오브젝트 위치 초기화
if (Touched)
{
SelectedObj.transform.position = hits[0].pose.position;
}
}
}
}
스크립트 이름은 TouchManager로 이전 포스팅 오브젝트 생성 스크립트를 수정하여 빌드합니다.
유니티 무료 애니메이션 캐릭터 믹사모(Mixamo) (0) | 2020.11.06 |
---|---|
유니티 빌드 에러 lancher lintClassPath (0) | 2020.11.04 |
유니티 AR Foundation 평면 인식 오브젝트 생성 (0) | 2020.10.23 |
유니티 AR Foundation 기본 설정 Start AR Foundation Setting (0) | 2020.10.23 |
유니티 ARCore 카메라 자동 초점 ARCore Camera Auto Focus (0) | 2020.10.15 |
댓글 영역