2021년 4학년 1학기 기업연계프로젝트2 컴퓨터소프트웨어공학과 <원광투어팀> 팀장 : 송유진 팀원 : 김나영, 이경희, 한유진
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

106 lines
2.8 KiB

//======= 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" );
}
}
}
}