LightshipAR SDK 활용하기 - LightshipAR 프로젝트 세팅

Published: Aug 9, 2022 by BeatChoi

LightshipAR SDK

포켓몬고의 개발사로 잘 알려진 Niantic에서 제공하는 증강현실 SDK 입니다.
기본적으로 포켓몬고에 적용되는 기능들을 구현할 수 있으며 기본적인 지면인식, 공간인식을 포함하여
지오펜싱을 활용한 GPS기반 위치인식, 환경 세그멘테이션 등의 기능들을 활용할 수 있습니다.

이번 강좌에서는 화면을 터치하여 공을 던져보도록 하겠습니다.

콘텐츠 개발

프로젝트 세팅

이전 포스팅인 LightshipAR 프로젝트 세팅를 참조하여 세팅합니다.

씬 세팅

기본 LightshipAR SDK 세팅이 끝났으면 씬으로 돌아와서 계층구조창에 Sphere오브젝트를 하나 생성합니다.
해당 오브젝트의 크기를 0.5,0.5,0.5 로 변경합니다.


<01. Sphere 생성 >

Sphere 오브젝트에 Rigidbody 컴포넌트를 추가합니다.


<02. Rigidbody 생성 >

Sphere 오브젝트를 프로젝트 창으로 끌어 내려서 프리펩으로 만들어 줍니다.


<03. Sphere Prefab 생성 >

씬에 남아있는 Sphere 오브젝트는 제거하고 SceneManager.cs스크립트를 생성합니다.
그리고 다음과 같이 스크립트를 작성합니다.

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
using UnityEngine;
using Niantic.ARDK.AR;
using Niantic.ARDK.AR.ARSessionEventArgs;
using Niantic.ARDK.Utilities;
using Niantic.ARDK.Utilities.Input.Legacy;

//Define our main class
public class SceneManager : MonoBehaviour
{
    public GameObject _ballPrefab;
    IARSession _ARsession;

    // Start is called before the first frame update
    void Start()
    {
        ARSessionFactory.SessionInitialized += OnSessionInitialized;
    }

    // Update is called once per frame
    void Update()
    {
        if (PlatformAgnosticInput.touchCount <= 0)
        {
            return;
        }
        
        var touch = PlatformAgnosticInput.GetTouch(0);
        if (touch.phase == TouchPhase.Began)
        {
            TouchBegan(touch);
        }
    }

    //This function will be called when a new AR Session has been created, as we instructed our 'ARSessionFactory' earlier
    private void OnSessionInitialized(AnyARSessionInitializedArgs args)
    {
        ARSessionFactory.SessionInitialized -= OnSessionInitialized;
        
        _ARsession = args.Session;
    }
    
    private void TouchBegan(Touch touch)
    {
        GameObject newBall = Instantiate(_ballPrefab);
        newBall.transform.rotation = Quaternion.Euler(new Vector3(0.0f, 0.0f, 0.0f)); 
        newBall.transform.position = Camera.main.transform.position + Camera.main.transform.forward;  


        Rigidbody rigbod = newBall.GetComponent<Rigidbody>();
        rigbod.velocity = new Vector3(0f, 0f, 0f);
        float force = 300.0f;
        rigbod.AddForce(Camera.main.transform.forward * force);
    }
}

위 스크립트는 Niantic LightshipAR 공식 문서에서 가져온 스크립트 입니다. https://lightship.dev/guides/lightship-basics/

해당 스크립트를 SessionManager오브젝트에 인스턴스화 시켜줍니다.


<04. 스크립트 인스턴스화 >

SessionManager오브젝트의 SceneManager컴포넌트의 Ball Prefab항목에 프로젝트 창에 만들어 둔 Sphere프리펩을 연결해줍니다.


<05. Sphere 프리펩 연결 >

마무리

해당 프로젝트를 빌드하여 모바일 디바이스에서 확인해봅니다.

Latest Posts

LightshipAR SDK 활용하기 - Maps SDK의 활용
LightshipAR SDK 활용하기 - Maps SDK의 활용

ARDK Maps SDK

Lightship의 geofencing 기능을 구현할 수 있는 Maps SDK 활용법을 알아봅니다.

콘텐츠 개발

프로젝트 세팅

본 포스팅은 ARDK 3.9 버전, Maps SDK 0.4 버전을 기준으로 작성합니다. 이전 포스팅을 참조하여 SDK를 임포트 합니다.

Top Down Map

  1. 네이버 지도같은 일반적인 탑-다운 맵을 구현해 봅니다.

Unity3D에서의 UI - Rect Transform
Unity3D에서의 UI - Rect Transform

Unity UI RectTransform :: 개요

UI 객체들의 위치, 크기, 기준점 등등을 담당하는 Rect Transform에 대하여 알아봅니다.

Unity3D에서의 UI - UI의 구성
Unity3D에서의 UI - UI의 구성

Unity UI :: 개요

Unity UI는 게임 및 애플리케이션용 사용자 인터페이스를 개발하는 데 쓰이는 간단한 UI 툴킷입니다. Unity UI는 게임 오브젝트 기반 UI 시스템으로, 컴포넌트와 게임 뷰를 사용하여 사용자 인터페이스를 배열하고 위치와 스타일을 지정합니다. Unity UI는 Unity 에디터 내 사용자 인터페이스에 대해 사용할 수 없습니다.https://docs.unity3d.com/kr/2019.1/Manual/UIToolkits.html