유니티와아두이노를활용한 VR 컨트롤러개발 Part 06 헬로앱스코딩교육 김영준 공학박사, 목원대학교겸임교수前 Microsoft 수석연구원 splduino@gmail.com http://www.helloapps.co.kr
키보드로물체생성하기
키보드로물체생성하기 public GameObject CubeObject; public GameObject MyCamera; SerialPort comm; void Start () comm = new SerialPort("COM4", 115200); comm.open();
키보드로물체생성하기
코드수정하기 void Update () if ( Input.GetKeyDown(KeyCode.Space) ) Instantiate( CubeObject, new Vector3(0, 5, 0), Quaternion.identity ); string s = comm.readline();
키보드로물체생성하기 실행후, 스패이스바를눌러본다.
랜덤위치에물체생성하기 void Update () if (Input.GetKeyDown(KeyCode.Space)) float x = Random.Range(-10f, 10f); float z = Random.Range(-10f, 10f); Instantiate(CubeObject, new Vector3(x, 10, z), Quaternion.identity);
임의의방향으로떨어지도록하기 if (Input.GetKeyDown(KeyCode.Space)) float x = Random.Range(-10f, 10f); float z = Random.Range(-10f, 10f); float o_x = Random.Range(-45f, 45f); float o_y = Random.Range(-45f, 45f); float o_z = Random.Range(-45f, 45f); GameObject new_object = Instantiate(CubeObject, new Vector3(x, 10, z), Quaternion.identity); new_object.transform.eulerangles = new Vector3(o_x, o_y, o_z);
일정한간격으로자동으로떨어지도록기능수정 float temp_time = 0; void Update () if ((Time.time - temp_time) > 1) temp_time = Time.time; float x = Random.Range(-10f, 10f); float z = Random.Range(-10f, 10f); float o_x = Random.Range(-45f, 45f); float o_y = Random.Range(-45f, 45f); float o_z = Random.Range(-45f, 45f); GameObject new_object = Instantiate(CubeObject, new Vector3(x, 10, z), Quaternion.identity); new_object.transform.eulerangles = new Vector3(o_x, o_y, o_z);
실행파일만들기
종료기능추가 void Update () if (Input.GetKeyDown(KeyCode.Escape)) Application.Quit();
실행파일빌드테스트 ( 윈도우버전 )
유니티 VR 콘텐츠개발실습
VR 세팅
AR 카메라추가
AR 카메라설정
AR 카메라설정
AR 카메라설정
안드로이드빌드하기
안드로이드배포하기 생성된 APK 파일을 USB 케이블로복사후설치 케이블이없는경우, 본인의이메일로파일배포후설치
블루투스를이용한아두이노 컨트롤러연동실습
아두이노보드에블루투스연결하기 아두이노보드의디지털 0 번과 1 번에각각블루투스 Rx, Tx 케이블을연결한다. GND 와 5V 케이블도아두이노의 GND 와 5V 핀에연결한다.
블루투스패키지설치하기 강사를통해배포된 HelloApps 블루투스커스텀패키지복사및설치 HelloAppsBT.unitypackage
블루투스패키지설치하기
블루투스패키지설치하기
블루투스패어링하기 안드로이드스마트폰에서블루투스켜기 장치추가한후, 아두이노에연결되어있는블루투스이름검색후추가 비밀번호는 1234 입력
블루투스디바이스이름추가하기 using UnityEngine; using System.Collections; public class BTBasicScript : MonoBehaviour string fromarduino = "" ; void Start () BtConnector.moduleName ("SPL V3 B0015"); BtConnector.connect(); void Update() if (Input.GetKeyDown(KeyCode.Escape)) BtConnector.close(); if (BtConnector.isConnected() && BtConnector.available()) fromarduino = BtConnector.readLine(); void OnGUI() GUI.Label(new Rect(0, 20, Screen.width, Screen.height*0.1f),"Arduino : " + fromarduino); GUI.Label(new Rect(Screen.width * 0.5f, 20, Screen.width, Screen.height * 0.1f), Status : " + BtConnector.readControlData());
디바이스연결테스트 앱빌드후배포 프로그램상단에연결및메시지정보표시되는지확인 아두이노보드전원재연결 앱실행
카메라이동과회전제어 using System.Collections; using System.Collections.Generic; using UnityEngine; public class BTControl_Sample_01 : MonoBehaviour public GameObject AR_Camera_Container; public GameObject Cube_Object; void Update() if (Input.GetKeyDown(KeyCode.Escape)) BtConnector.close(); if (BtConnector.isConnected() && BtConnector.available()) fromarduino = BtConnector.readLine(); if (fromarduino.startswith("<") && fromarduino.endswith(">")) string s = fromarduino.trimstart('<').trimend('>'); string[] data = s.split(','); string fromarduino = ""; void Start() BtConnector.moduleName("SPL V3 B0015"); BtConnector.connect(); string d = data[0]; float x = float.parse(data[1]); float y = float.parse(data[2]); x = x / 500.0f; y = y / 500.0f; float v = x * Time.deltaTime * 10; float h = y * Time.deltaTime * 10; AR_Camera_Container.transform.Translate(h, 0, v);
박스생성하는기능추가 void Update() if (d == "0") GameObject new_object = Instantiate(CubeObject, new Vector3(x, 10, z), Quaternion.identity);
박스발사하는기능추가 void Update() if (d == "0") GameObject new_object = Instantiate(CubeObject, new Vector3(x, 10, z), Quaternion.identity); Rigidbody rb = new_object.transform.getcomponent<rigidbody>(); rb.addforce(ar_camera_container.transform.forward * 1000);