'안드로이드'에 해당되는 글 2건

  1. 2015/01/19 글뻥 unity3D Gyro Camera
  2. 2014/08/19 글뻥 Unity3D Android 에서 다른 어플 실행하기. (2)
유니티3D에서 자이로 효과를 카메라에 적용하는 스크립트입니다.
(Marker 없이 자이로로만 캐릭터를 바닥에 닫게 한다던가... 그럴때 사용하는...)

using UnityEngine;
using System.Collections;

public class CameraPivot : MonoBehaviour
{
 float _BaseAngle = -90f;

 void Start()
 {
 Input.gyro.enabled = true;
 }

 void Update()
 {
 Quaternion q1 = Input.gyro.attitude;
 Quaternion q2 = new Quaternion(q1.y, -q1.z, -q1.x, q1.w);

 transform.rotation = Quaternion.Euler(new Vector3(q2.eulerAngles.x, _BaseAngle, q2.eulerAngles.z));
 if (transform.rotation.eulerAngles.z <= 275f && transform.rotation.eulerAngles.z > 180f)
 transform.rotation = Quaternion.Euler(new Vector3(transform.rotation.eulerAngles.x, transform.rotation.eulerAngles.y, 275f));
 if (transform.rotation.eulerAngles.z >= 355f || transform.rotation.eulerAngles.z <= 180f)
 transform.rotation = Quaternion.Euler(new Vector3(transform.rotation.eulerAngles.x, transform.rotation.eulerAngles.y, 355f));
 }
}


1. 빈 게임오브젝트 만들어서 이름 바꾼뒤에 아래와 같이 스크립트 포함시킵니다.
사용자 삽입 이미지
2. Pivot 해줄 오브젝트 만들어서 다음과 같이 Rotation값을 (90, -90, 0)으로 설정합니다.
사용자 삽입 이미지
3. 마지막으로 Gyro camera를 설정한다.
사용자 삽입 이미지
4. Main Camera에서 다음과 같이 설정해주면 끝!
사용자 삽입 이미지

* Marker기반 AR과의 차이점.
1. Zoom in-out이 수동임.
2. 화면 Center를 중앙으로 인식함.
3. 회전이 수동임. (축이 고정되어 자동으로 먹히게 하는것 처럼 보이는 건 https://github.com/keijiro/GyroCam 참고)

2015/01/19 17:20 2015/01/19 17:20
너무나 정신없어서 블로그 관리도 못하고 있네요.
그럼에도 블로그 방문해주신 대부분의 Bot 여러분 및 소수의 열성 독자 여러분께 감사드립니다. (it's joke~!)
Unity3D 에서 안드로이드 개발할때 간혹 다른 앱을 실행하고자 할 때가 있습니다.
물론 이클립스 열어서 플러그인을 만들거나 혹은 쿵짝 쿵짝하는 경우가 있지만, 여기에서는 기본 C#코드로만 하는 방법을 설명할께요.

본 예제는 Android 기본 갤러리를 여는 예제입니다.
 
void LaunchGallery () { 
   AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); 
   AndroidJavaObject jo = jc.GetStatic("currentActivity"); 
   AndroidJavaObject pm = jo.Call("getPackageManager"); 
   AndroidJavaObject intent = pm.Call("getLaunchIntentForPackage", "com.android.gallery3d");
   jo.Call("startActivity", intent); 
}
 


처음부터 보자면, 예전 포스팅 (http://www.wolfpack.pe.kr/860)에서 밝혔던, Static 은 AndroidJavaClass, instance는 AndroidJavaObject 원칙에 따라 Class를 먼저 호출했습니다.
그리고나서, 현재 Activity를 호출했구요.
다음줄 부터는 Android API에 따라서,
getPackageManager (상세 여기참조) 와 getLaunchIntentForPackage (상세 여기참조)을 호출하면서 getLaunchIntentForPackage에 인자값으로 패키지명인 "com.android.gallery3d"을 넣어 줬습니다.
이제 준비가 다 끝나고 마지막으로 준비된 과정을 한꺼번에 부어서...
currentActivity Object에서 startActivity로 실행했습니다.
Intent는 다른 앱을 실행하고나서의 통신을 설정하는 부분인데 Intent 정의를 따로 하지 않았으니 통신하지 않겠다는 의미입니다. =)

그럼 수고하세요.
2014/08/19 21:44 2014/08/19 21:44