unity 摄像机追随指定物体
unity 摄像机追随指定物体, 摄像机离远离近,围绕物体旋转using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
public class CameraToTarget : MonoBehaviour {
public Transform Camera2;
public GameObject objname;
public float dis;public static CameraToTarget instance;
// public static Global_FllowMouseRotate global_fllow;
public Transform target; //目标物体
public float xSpeed = 200, ySpeed = 200, mSpeed = 10; //移动速度
public float yMinLimit = -50, yMaxLimit = 50; //摄像机的Y轴移动最小最大限制
public float distance = 7, minDistance = 2, maxDistance = 30; //摄像机与目标物体的距离
public bool needDamping = true; //阻尼默认开启
float damping = 5.0f; //默认阻尼为5.0Fpublic float x = 0.0f; //X轴
public float y = 0.0f; //Y轴private void Start()
{instance = this;// global_fllow = this;Vector3 angles = transform.eulerAngles;x = transform.rotation.y;y = transform.rotation.x;
}#region 追踪物体
//void MoveCameraToTarget()
//{
// // Selectobj = GameObject.Find(objname);
// if (objname != null)
// {
// //Camera2.LookAt(Selectobj.transform);
// Camera2.position = Vector3.MoveTowards(Camera2.position, objname.transform.position, 30 * Time.deltaTime);// dis = Vector3.Distance(Camera2.transform.position, objname.transform.position);// if (dis < 1.5f)
// {
// var rotation = Quaternion.LookRotation(objname.transform.TransformVector(Vector3.forward),
// objname.transform.TransformVector(Vector3.up));
// rotation = new Quaternion(0, rotation.y, 0, rotation.w);
// Camera2.transform.rotation = rotation;
// CancelInvoke("MoveCameraToTarget");
// target = objname.transform;
// // Debug.Log(rotation.y+"____" + rotation.x);
// x = objname.transform.localEulerAngles.y;
// y = objname.transform.localEulerAngles.x;
// }// }
// else
// {// Debug.Log("物体为空");
// }
//}
//public void MoveToSystem()
//{
// InvokeRepeating("MoveCameraToTarget", 1, 0.0002f);//}
#endregion/// <summary>
/// 检测鼠标是否按下进行旋转物体
/// </summary>
void LateUpdate()
{if (target){//使用按下鼠标左键移动物体if (Input.GetMouseButton(1)){x += Input.GetAxis("Mouse X") * xSpeed * 0.02f;y -= Input.GetAxis("Mouse Y") * ySpeed * 0.02f;y = ClampAngle(y, yMinLimit, yMaxLimit);}distance -= Input.GetAxis("Mouse ScrollWheel") * mSpeed;distance = Mathf.Clamp(distance, minDistance, maxDistance);Quaternion rotation = Quaternion.Euler(y, x, 0.0f);Vector3 disVector = new Vector3(0.0f, 0.0f, -distance);Vector3 position = rotation * disVector + target.position;//adjust the cameraif (needDamping){transform.rotation = Quaternion.Lerp(transform.rotation, rotation, Time.deltaTime * damping);transform.position = Vector3.Lerp(transform.position, position, Time.deltaTime * damping);}}
}/// <summary>
/// 旋转角度的控制
/// </summary>
/// <param name="angle">旋转的角度</param>
/// <param name="min">最小角度</param>
/// <param name="max">最大角度</param>
/// <returns></returns>
static float ClampAngle(float angle, float min, float max)
{if (angle < -360)angle += 360;if (angle > 360)angle -= 360;return Mathf.Clamp(angle, min, max);
}
/// <summary>
/// 每个物体
/// </summary>
/// <param name="other"></param>
}
unity 摄像机追随指定物体相关推荐
- Unity 相机固定角度平移至指定物体
前言:这个也是我得一个朋友怎么做,朋友跟我说的方法,然后我就想记录下来,当个学习. 需求:相机固定视角(相机的高是15.x轴选转30.y轴旋转15),地图上有很多物体,点击后相机移动到指定物体(物体居 ...
- Unity摄像机对象锁定旋转运镜模拟
问题简述 在3D模式下如何模拟实现Unity摄像机对象锁定旋转运镜,可以分为两个部分,第一是实现对象锁定,第二是实现旋转运镜.对象锁定就是无论摄像机如何运动,始终保持对象位于摄像机成像区域的固定位置, ...
- Unity摄像机画面制作全景图片|截图制作全景图
Unity摄像机画面制作全景图片 目录 效果展示 Unity编辑器中使用脚本部分 Unity编辑器中使用方法 Unity动态存储图片脚本部分 Unity动态存储图片使用方法 目录 你好! 这是你第一次 ...
- 【UE4教程】Unreal 4.22 UI显示指定物体-实时渲染
UE4教程 UI显示指定物体-实时渲染 介绍一下实时渲染,对指定物体显示到UI上面的教程 效果图 教程部分 创建第三人称模板 添加渲染摄像机组件(可以添加在场景中,也可以添加在人物蓝图内)组件1 组件 ...
- Unity摄像机拍照并显示在小窗口里(RenderTexture和RawImage将摄像机图像渲染到GUI屏幕上小图显示)
Unity摄像机拍照并显示在小窗口里(RenderTexture和RawImage将摄像机图像渲染到GUI屏幕上小图显示) 1.实现效果和实现思想 1.实现效果和实现思想 实现效果: 本文使用飞机模型 ...
- Unity中获取一个物体下所有的子物体的方法
Unity中获取一个物体下所有的子物体的方法 方法1(获取全部子物体,无论子物体SetActive是否为true): using System.Collections; using System.Co ...
- unity中控制游戏物体移动最基本的三种方法
**unity**中控制游戏物体移动的最基本的三种方法 第一种移动方法-transform.Translate,游戏物体按照你给的方向和速度进行运动 代码如下: Public float speed; ...
- 【Unity】获取当前物体下的所有子物体
使用Transform.GetComponentsInChildren<>()的方法来获取指定物体下的所有子物体,并复制给数组,然后进行遍历 activePanel为指定物体,string ...
- unity 里让一个物体围绕x,y,z轴旋转起来。
如何 在unity 里让一个物体围绕x,y,z轴旋转起来? 先看下效果: 如何 在unity 里让一个物体围绕x轴旋转起来?答案揭晓: 实现代码: using System.Collections; ...
最新文章
- 在CentOS 6.9 x86_64的nginx 1.12.2上开启标准模块ngx_http_auth_request_module实录
- new和malloc的区别
- 内存的静态分配和动态分配的区别【转】 静态分配内存与动态分配内存的区别
- Linux运行项目部分空指针,技术文章—Linux编程时遇到Oops提示该如何排查?
- Ajax+Node.js前后端交互最佳入门实践(04)
- 张正友标定法 【计算机视觉学习笔记--双目视觉几何框架系列】
- LeetCode 1250. 检查「好数组」(set / 最大公约数)
- echarts源码:图标类插件开发
- matlab abc to dq0仿真,逆变器负载论文,关于基于同步旋转坐标的三相逆变器控制系统仿真相关参考文献资料-免费论文范文...
- 网络摄像头转usb接口_同时读取多个摄像头数据(包括海康网络摄像头和USB摄像头)...
- 零代码的科普算法书《未来算法》读后
- PassMark 更新排行,苹果 M1 杀疯了
- 基督-神[上帝]的道,真理的本真归回
- Android Studio 安装后Gradle一直在gradle build running的问题
- 小米历史版本在哪下载
- 2020.8.26丨Nanopore甲基化测序产品概述
- c语言int2字节负数类型范围,C语言中的正负数以及数值溢出
- Android Weekly #31:你最能影响「他者」的,是你正在工作的状态
- 让源代码成为开发者最宝贵的财富
- 简单易懂应如何快速掌握超长激光测距仪相关性能指标TFNLR20KI激光测距仪带你走进其简单的世界
热门文章
- Essential Google Cloud Infrastructure: Foundation
- php fwrite 图片,PHP fwrite( )用法及代码示例
- memsql-官宣世界最快的内存关系型数据库安装部署
- 什么是sql注入,怎么防止SQL注入?
- Value cannot be null. (Parameter ‘connectionString‘)
- ML - Regression
- 微信公众平台接口,asp.net实现
- Android 图片处理
- 用WIN7装oracle10g的步骤
- 基于Visio Studio Code打造go的IDE