• 大小: 4KB
    文件类型: .cs
    金币: 1
    下载: 0 次
    发布日期: 2021-06-15
  • 语言: C#
  • 标签: Unity3  Camera  C#  

资源简介

Unity GameView相机移动和旋转脚本,支持相机移动,自转,公转 使用方法,需要移动的相机GameObject上挂上该脚本 W / ↑:向前移动; S / ↓:向后移动; A / ←:向左移动; D / →:向右移动; Q:向下移动; E:向上移动; 鼠标中键滚动:缩放(相机FOV); 按住鼠标左键移动:上下左右移动; 按住鼠标右键移动:相机自身旋转(俯仰和偏航); 按住ctrl键并用鼠标左键点击物体:看向该物体,并设置该物体为公转中心;点击没有物体的地方取消选中 按住ctrl键并按住鼠标右键移动:绕公转中心旋转(没有选中物时默认以相机前3m的虚拟焦点旋转);

资源截图

代码片段和文件信息

using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;

[RequireComponent(typeof(Camera))]
public class CameraMovement : MonoBehaviour {
    private Camera cam;
    public float moveSpeed = 10.0f;
    public float zoomSpeed = 20.0f;
    public float dragSpeed = 1.0f;
    public float resolutionRadius = 3.0f;
    public float resolutionSpeed = 0.1f;
    public float rotationSpeed = 5.0f;
    public Transform selected;
    private const string MouseX = “Mouse X“;
    private const string MouseY = “Mouse Y“;
    // Use this for initialization
    void Start () {
        cam = GetComponent();
    }

// Update is called once per frame
void Update () {
        var e = Event.current;
        var deltaTime = Time.deltaTime;
        var camTrans = cam.transform;
        Vector3 translation = Vector3.zero;
        if (Input.GetKey(KeyCode.W) || Input.GetKey(KeyCode.UpArrow)) // front
        {
            translation += camTrans.forward * moveSpeed * deltaTime;
        }
        else if (Input.GetKey(KeyCode.S) || Input.GetKey(KeyCode.DownArrow)) //back
        {
            translation += -camTrans.forward * moveSpeed * deltaTime;
        }

        if (Input.GetKey(KeyCode.A) || Input.GetKey(KeyCode.LeftArrow))
        {
            translation += -camTrans.right * moveSpeed * deltaTime;
        }
        else if (Input.GetKey(KeyCode.D) || Input.GetKey(KeyCode.RightArrow))
        {
            translation += camTrans.right * moveSpeed * deltaTime;
        }

        if (Input.GetKey(KeyCode.Q)) // down
        {
            translation += -Vector3.up * moveSpeed * deltaTime;
        }
        else if (Input.GetKey(KeyCode.E)) // up
        {
            translation += Vector3.up * moveSpeed * deltaTime;
        }

        if (Input.GetMouseButton(0)) // xy translate
        {
            var drag = Input.GetAxis(MouseX) * dragSpeed;
            translation += -camTrans.right * drag;
            drag = Input.GetAxis(MouseY) * dragSpeed;
            translation += -camTrans.up * drag;
        }
        camTrans.position = camTrans.position + translation;

        if (Input.GetMouseButton(1)) 
        {
            if (Input.GetKey(KeyCode.Left

评论

共有 条评论