[CameraScene]
스마트폰움직임이랑 Unity MainCamera랑 움직임 동일화
1. GyroCamera.cs
using UnityEngine; using System.Collections; public class GyroCamera : MonoBehaviour { private Gyroscope gyro; private bool gyroSupported; private Quaternion rotFix; void Start () { gyroSupported = SystemInfo.supportsGyroscope; GameObject camParent = new GameObject("camParent"); camParent.transform.position = transform.position; transform.parent = camParent.transform; if(gyroSupported) { gyro = Input.gyro; gyro.enabled = true; camParent.transform.rotation = Quaternion.Euler(90f, 180f, 0f); rotFix = new Quaternion(0, 0, 1, 0); } } void Update () { transform.localRotation = gyro.attitude * rotFix; } }
2. GyroCamera.cs
public class GyroCamera : MonoBehaviour { private Gyroscope gyro; private bool gyroSupported; private Quaternion rotFix; [SerializeField] private Transform worldObj; private float startY; void Start () { gyroSupported = SystemInfo.supportsGyroscope; GameObject camParent = new GameObject("camParent"); camParent.transform.position = transform.position; transform.parent = camParent.transform; if(gyroSupported) { gyro = Input.gyro; gyro.enabled = true; camParent.transform.rotation = Quaternion.Euler(90f, 180f, 0f); rotFix = new Quaternion(0, 0, 1, 0); } } void Update () { if(gyroSupported && startY == 0) { ResetGyroRotation(); } transform.localRotation = gyro.attitude * rotFix; } void ResetGyroRotation() { startY = transform.eulerAngles.y; worldObj.rotation = Quaternion.Euler(0f, startY, 0f); } }
[WebcamScene]
RawImage에다가 WebcamTexture입혀서 백그라운드로
1. CameraAsBackground.cs
public class CameraAsBackground : MonoBehaviour { private RawImage image; private WebCamTexture cam; private AspectRatioFitter arf; void Start () { arf = GetComponent<Aspectratiofitter>(); image = GetComponent<Rawimage>(); cam = new WebCamTexture(Screen.width, Screen.height); image.texture = cam; cam.Play(); } void Update () { if(cam.width < 100) { return; } float cwNeeded = -cam.videoRotationAngle; if (cam.videoVerticallyMirrored) cwNeeded += 180f; image.rectTransform.localEulerAngles = new Vector3(0f, 0f, cwNeeded); float vidioRatio = (float)cam.width / (float)cam.height; arf.aspectRatio = vidioRatio; } }
2. CameraAsBackground.cs
public class CameraAsBackground : MonoBehaviour { private RawImage image; private WebCamTexture cam; private AspectRatioFitter arf; void Start () { arf = GetComponent<Aspectratiofitter>(); image = GetComponent<Rawimage>(); cam = new WebCamTexture(Screen.width, Screen.height); image.texture = cam; cam.Play(); } void Update () { if(cam.width < 100) { return; } float cwNeeded = -cam.videoRotationAngle; if (cam.videoVerticallyMirrored) cwNeeded += 180f; image.rectTransform.localEulerAngles = new Vector3(0f, 0f, cwNeeded); float vidioRatio = (float)cam.width / (float)cam.height; arf.aspectRatio = vidioRatio; if(cam.videoVerticallyMirrored) { image.uvRect = new Rect(1, 0, -1, 1); } else { image.uvRect = new Rect(0, 0, 1, 1); } } }
'NOTE > SaveSource' 카테고리의 다른 글
[Source Save] TouchCameraMove.cs (0) | 2016.10.31 |
---|---|
[Source Save] InputTouchManager.cs (0) | 2016.10.27 |
[SaveSource] Drag Script (0) | 2016.10.14 |
[SaveSource] Touch Pinch Zoom (0) | 2016.10.14 |
[SaveSource] Player Cam & Input.Axis (0) | 2016.10.07 |