123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- //======= Copyright (c) Valve Corporation, All rights reserved. ===============
- //
- // Purpose: Controls for the non-VR debug camera
- //
- //=============================================================================
- using UnityEngine;
- using System.Collections;
- namespace Valve.VR.InteractionSystem
- {
- //-------------------------------------------------------------------------
- [RequireComponent( typeof( Camera ) )]
- public class FallbackCameraController : MonoBehaviour
- {
- public float speed = 4.0f;
- public float shiftSpeed = 16.0f;
- public bool showInstructions = true;
- private Vector3 startEulerAngles;
- private Vector3 startMousePosition;
- private float realTime;
- //-------------------------------------------------
- void OnEnable()
- {
- realTime = Time.realtimeSinceStartup;
- }
- //-------------------------------------------------
- void Update()
- {
- float forward = 0.0f;
- if ( Input.GetKey( KeyCode.W ) || Input.GetKey( KeyCode.UpArrow ) )
- {
- forward += 1.0f;
- }
- if ( Input.GetKey( KeyCode.S ) || Input.GetKey( KeyCode.DownArrow ) )
- {
- forward -= 1.0f;
- }
- float up = 0.0f;
- if (Input.GetKey(KeyCode.E))
- {
- up += 1.0f;
- }
- if (Input.GetKey(KeyCode.Q))
- {
- up -= 1.0f;
- }
- float right = 0.0f;
- if ( Input.GetKey( KeyCode.D ) || Input.GetKey( KeyCode.RightArrow ) )
- {
- right += 1.0f;
- }
- if ( Input.GetKey( KeyCode.A ) || Input.GetKey( KeyCode.LeftArrow ) )
- {
- right -= 1.0f;
- }
- float currentSpeed = speed;
- if ( Input.GetKey( KeyCode.LeftShift ) || Input.GetKey( KeyCode.RightShift ) )
- {
- currentSpeed = shiftSpeed;
- }
- float realTimeNow = Time.realtimeSinceStartup;
- float deltaRealTime = realTimeNow - realTime;
- realTime = realTimeNow;
- Vector3 delta = new Vector3( right, up, forward ) * currentSpeed * deltaRealTime;
- transform.position += transform.TransformDirection( delta );
- Vector3 mousePosition = Input.mousePosition;
- if ( Input.GetMouseButtonDown( 1 ) /* right mouse */)
- {
- startMousePosition = mousePosition;
- startEulerAngles = transform.localEulerAngles;
- }
- if ( Input.GetMouseButton( 1 ) /* right mouse */)
- {
- Vector3 offset = mousePosition - startMousePosition;
- transform.localEulerAngles = startEulerAngles + new Vector3( -offset.y * 360.0f / Screen.height, offset.x * 360.0f / Screen.width, 0.0f );
- }
- }
- //-------------------------------------------------
- void OnGUI()
- {
- if ( showInstructions )
- {
- GUI.Label( new Rect( 10.0f, 10.0f, 600.0f, 400.0f ),
- "WASD EQ/Arrow Keys to translate the camera\n" +
- "Right mouse click to rotate the camera\n" +
- "Left mouse click for standard interactions.\n" );
- }
- }
- }
- }
|