ネトフリのVOID THEATERっぽい操作
code:UIController.cs
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class UIController : MonoBehaviour
{
public float distance = 10.0f;
public float minDistance = 1.0f;
public float maxDistance = 30.0f;
public float monitorSlope = 20.0f;
public Transform monitor;
public Material movingMaterial;
private Material originalMaterial;
private bool inMoving = false;
// Use this for initialization
void Start()
{
originalMaterial = monitor.gameObject.GetComponent<Renderer>().material;
}
// Update is called once per frame
void Update()
{
var shoot = Input.GetButtonDown("Fire1");
var shoot = OVRInput.GetDown(OVRInput.Button.PrimaryIndexTrigger);
if (shoot){
inMoving = !inMoving;
var render = monitor.gameObject.GetComponent<Renderer>();
if (inMoving){
render.material = movingMaterial;
}
else{
render.material = originalMaterial;
}
}
if (!inMoving){
return;
}
var padMove = OVRInput.Get(OVRInput.Axis2D.PrimaryTouchpad);
distance += padMove.y;
distance = Mathf.Min(distance, maxDistance);
distance = Mathf.Max(distance, minDistance);
var camTrans = Camera.main.transform;
var newPos = camTrans.rotation * Vector3.forward * distance;
monitor.transform.position = newPos;
monitor.transform.rotation = camTrans.rotation;
monitor.transform.Rotate(new Vector3(90 - monitorSlope, 180, 0));
}
}