unity相机操作
来源:互联网 发布:汉高祖知乎 编辑:程序博客网 时间:2024/05/18 14:42
using System;using UnityEngine;public class FreeCamera : MonoBehaviour{ private const float DragFactor = 30; //跟随相机的物体 private GameObject _cameraFollowObj, _cameraFollowObj2; public float _factorX = 0.5f, _factorY = 0.5f; private Camera _localCamera; [SerializeField] private float _mouseSensitivity = 20.0f; private GameObject _moveToPath; public Vector3 _pos; private float _scrollRate = 600; [SerializeField] private float _speed = 30.0f; public float _www = 10; public float _zzz = 2; //public Vector3 ttt = new Vector3(0, -1, 0); private void Awake() { _localCamera = GetComponent<Camera>(); _cameraFollowObj = GameObject.Find("Sphere_FollowCamera"); _cameraFollowObj2 = GameObject.Find("Sphere_FollowCamera (1)"); _moveToPath = GameObject.Find("MoveOnPath");// var rd = gameObject.AddComponent<LineRenderer>();// rd.SetVertexCount(2);// rd.SetWidth(_zzz, _zzz);// rd.SetColors(Color.red, Color.red); } private void UpdateFollowSphere() {#if false RaycastHit hit; Ray ray = new Ray(_cameraFollowObj.transform.position, Vector3.down); if (Physics.Raycast(ray, out hit, _www)) {// var rd = gameObject.GetComponent<LineRenderer>();// rd.SetPosition(0, _cameraFollowObj.transform.position);// rd.SetPosition(1, new Vector3(_cameraFollowObj.transform.position.x, hit.transform.position.y, _cameraFollowObj.transform.position.z));// rd.SetWidth(_zzz, _zzz); // Debug.Log(hit.transform.gameObject.name); // Debug.Log(hit.transform.position); // _cameraFollowObj2.transform.position = new Vector3(_cameraFollowObj2.transform.position.x, // hit.transform.position.y, // _cameraFollowObj2.transform.position.z); Vector3 pos = _cameraFollowObj.transform.position; Debug.Log(hit.transform.position.y + ", " + hit.point.y); //_cameraFollowObj2.transform.rotation = _cameraFollowObj.transform.rotation; _cameraFollowObj2.transform.position = new Vector3(pos.x, hit.point.y, pos.z); }#endif// Vector3 centerPos = new Vector3(Screen.width * .5f, Screen.height * .5f, 0);// Vector3 pos = Camera.main.ScreenToWorldPoint(centerPos);// Ray ray = new Ray(_cameraFollowObj.transform.position, Vector3.down);// RaycastHit hit;//// if (Physics.Raycast(ray, out hit))// {// _cameraFollowObj2.transform.position = hit.point;// Debug.Log(hit.point);// } } private void Update() { // UpdateFollowSphere(); if (Input.GetMouseButton(0)) { float deltaX = Input.GetAxis("Mouse X")*Time.deltaTime*60; float deltaY = Input.GetAxis("Mouse Y")*Time.deltaTime*60; if (Mathf.Abs(deltaX) > Mathf.Abs(deltaY)) transform.RotateAround(_cameraFollowObj.transform.position, Vector3.up, deltaX); else transform.RotateAround(_cameraFollowObj.transform.position, transform.right, -deltaY); } if (Input.GetMouseButton(2)) { float deltaX = Input.GetAxis("Mouse X")*Time.deltaTime*DragFactor; float deltaY = Input.GetAxis("Mouse Y")*Time.deltaTime*DragFactor; transform.position += transform.right*deltaX; transform.position += Quaternion.AngleAxis(-90, Vector3.up)*transform.right*deltaY; } if (Input.GetKey(KeyCode.LeftShift) || Input.GetKey(KeyCode.RightShift)) { _speed = 40; _mouseSensitivity = 80; _scrollRate = 3000; } else if (Input.GetKey(KeyCode.LeftAlt) || Input.GetKey(KeyCode.RightAlt)) { _speed = 0.5f; _mouseSensitivity = 10; _scrollRate = 100; } else { _speed = 10; _mouseSensitivity = 50; _scrollRate = 600; } float scrollWheel = Input.GetAxis("Mouse ScrollWheel")*_scrollRate*Time.deltaTime; if (Math.Abs(scrollWheel) > 0.00001) { transform.position = Vector3.LerpUnclamped(transform.position, _cameraFollowObj.transform.position, scrollWheel); } if (Input.GetKey(KeyCode.W)) { transform.position += Quaternion.AngleAxis(-90, Vector3.up)*transform.right*_speed*Time.deltaTime; } if (Input.GetKey(KeyCode.S)) { transform.position -= Quaternion.AngleAxis(-90, Vector3.up)*transform.right*_speed*Time.deltaTime; } if (Input.GetKey(KeyCode.A)) { transform.position -= transform.right*_speed*Time.deltaTime; } if (Input.GetKey(KeyCode.D)) { transform.position += transform.right*_speed*Time.deltaTime; } if (Input.GetKey(KeyCode.UpArrow)) { transform.position += Vector3.up*_speed*Time.deltaTime * 0.6f; } if (Input.GetKey(KeyCode.DownArrow)) { transform.position -= Vector3.up*_speed*Time.deltaTime * 0.6f; } //旋转 if (Input.GetKey(KeyCode.Q)) { transform.RotateAround(_cameraFollowObj.transform.position, transform.right, -_mouseSensitivity*Time.deltaTime); } if (Input.GetKey(KeyCode.E)) { transform.RotateAround(_cameraFollowObj.transform.position, transform.right, _mouseSensitivity*Time.deltaTime); }#if false if (Input.GetKey(KeyCode.Z)) { transform.RotateAround(cameraFollowObj.transform.position, transform.forward, -mouseSensitivity * Time.deltaTime); } if (Input.GetKey(KeyCode.X) || Input.GetKey(KeyCode.C)) { transform.RotateAround(cameraFollowObj.transform.position, transform.forward, mouseSensitivity * Time.deltaTime); }#endif if (Input.GetKey(KeyCode.LeftArrow)) { transform.RotateAround(_cameraFollowObj.transform.position, Vector3.up, _mouseSensitivity*Time.deltaTime); } if (Input.GetKey(KeyCode.RightArrow)) { transform.RotateAround(_cameraFollowObj.transform.position, Vector3.up, -_mouseSensitivity*Time.deltaTime); } }}
0 0
- unity相机操作
- unity 实现鼠标对相机的操作
- Unity 相机控制集合。。。。
- unity 相机跟随
- Unity平滑相机跟随
- 【Unity】 相机移动脚本
- 004.unity相机
- Unity相机截图
- Unity中相机跟随
- unity避免相机穿墙
- unity 相机截屏
- Unity相机摇动
- Unity基础,相机跟随
- unity icon 面向相机
- 【Unity】关于Unity切换手机前后相机
- [Unity实战]相机观察物体
- Unity中用鼠标缩放相机。
- Unity根据相机截屏
- JavaEE学习之路—–JSP(一)
- web性能调优------前言
- 设计模式复习笔记 (9)结构型模式:桥接模式
- MySQL入门篇(二)数据库的基本操作
- 结构体
- unity相机操作
- 运算符和函数
- Carthage使用心得-让自己的项目支持Carthage
- UE4 Config配置文件详解(2017.4.1更新)
- CodeForces 617E XOR and Favorite Number 【莫队】
- udev
- JNI学习(二)之实例分析
- 看《人人都是产品经理》有感
- iOS widget 学习笔记