Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- namespace Edu3d
- {
- public class DragCamera : MonoBehaviour
- {
- //#if UNITY_EDITOR
- // flag to keep track whether we are dragging or not
- bool isDragging = false;
- // starting point of a camera movement
- float startMouseX;
- float startMouseY;
- // Camera component
- Camera cam;
- public float WalkingSpeed = 10;
- public float LiftUp = 10;
- // Use this for initialization
- void Start()
- {
- // Get our camera component
- cam = GetComponent<Camera>();
- }
- // Update is called once per frame
- void Update()
- {
- if (Input.GetKey(KeyCode.UpArrow) || (Input.GetKey("w")))
- {
- MoveForward(WalkingSpeed);
- }
- if (Input.GetKey(KeyCode.DownArrow) || (Input.GetKey("s")))
- {
- MoveForward(-WalkingSpeed);
- }
- if (Input.GetKey("q") || (Input.GetKey(KeyCode.PageUp)))
- {
- transform.position = transform.position + new Vector3(0, LiftUp * Time.deltaTime, 0);
- }
- if (Input.GetKey("z") || (Input.GetKey(KeyCode.PageDown)))
- {
- transform.position = transform.position + new Vector3(0, -LiftUp * Time.deltaTime, 0);
- }
- // if we press the left button and we haven't started dragging
- if (Input.GetMouseButtonDown(1) && !isDragging)
- {
- // set the flag to true
- isDragging = true;
- // save the mouse starting position
- startMouseX = Input.mousePosition.x;
- startMouseY = Input.mousePosition.y;
- }
- // if we are not pressing the left btn, and we were dragging
- else if (Input.GetMouseButtonUp(1) && isDragging)
- {
- // set the flag to false
- isDragging = false;
- }
- }
- private void MoveForward(float x)
- {
- transform.position += cam.transform.forward * x * Time.deltaTime;
- }
- void LateUpdate()
- {
- // Check if we are dragging
- if (isDragging)
- {
- //Calculate current mouse position
- float endMouseX = Input.mousePosition.x;
- float endMouseY = Input.mousePosition.y;
- //Difference (in screen coordinates)
- float diffX = endMouseX - startMouseX;
- float diffY = endMouseY - startMouseY;
- //New center of the screen
- float newCenterX = Screen.width / 2 + diffX;
- float newCenterY = Screen.height / 2 + diffY;
- //Get the world coordinate , this is where we want to look at
- Vector3 LookHerePoint = cam.ScreenToWorldPoint(new Vector3(newCenterX, newCenterY, cam.nearClipPlane));
- //Make our camera look at the "LookHerePoint"
- transform.LookAt(LookHerePoint);
- //starting position for the next call
- startMouseX = endMouseX;
- startMouseY = endMouseY;
- }
- }
- //#endif
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement