旋转camera到特定对象
设定一个物体使得camera可以从现在为止自动飞到当前位置
1. 设定一个位置,可以在其前方放置一个显示其位置的cube。这里也可以写脚本设定位置。
2. 使用函数
移动函数 transform.position = vector3.slerp(positionstart, positionEnd, Time*time*0.001);
旋转函数 transform.Rotation = Quaternion.slerp(StartRotation, aimRotation, Time.time*0.00001);
3.在控制自动漫游于原始FPC摄像机的切换脚本中添加功能:按下run,自动记录当前position,rotation;按FPS,恢复原来位置;
4. aimRotation制定:
4.1 由于我的摄像机一开始旋转了180度,因此需要添加
aimRotation = Inverse(CubeRotation);
aimRotation.y = 180度 + aimRotation.y;
4.2 当移动到aimpostion时,FPS在轻微移动,因此加上判断;FPS与aimPostion 很近的时候,就直接将位置赋值给FPS;
Time
Time.time 这一帧执行的时间距离开始时间
Time.deltatime * 10 每帧移动10米
这段脚本是我写的包含控制函数使得摄像机首先扭转方向到目标物体,然后按照该方向飞向目标物体,包含当物体里目标位置很近的时候,模糊摄像机,然后恢复正常状态
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
|
var startObject : GameObject;var aimObject : GameObject;var aimObjectLocation : GameObject;var maincamera : Camera;private var PositionStart : Vector3;private var PositionEnd : Vector3;private var aimRotation : Quaternion;private var startRotation : Quaternion;private var distance : float = 10;private var angle : float = 10;private var isBlur : boolean = false;private var isCloseEnough : boolean = false;private var relativePos : Vector3;private var rotationFinished : boolean = false;private var angleDefinition : boolean = false;private var translateBegin : boolean = false;function Update () { PositionStart = startObject.transform.position; PositionEnd = aimObjectLocation.transform.position; if(!translateBegin) { relativePos = aimObject.transform.position - PositionStart; if(transform.position == PositionEnd) { rotationFinished = true; } else { if(relativePos != Vector3.zero) { aimRotation = Quaternion.LookRotation(relativePos); } else { rotationFinished = true; } var angle = Quaternion.Angle(transform.rotation, aimRotation); if (angle != 0) { rotationFinished = false; //distance = 10; } else { rotationFinished = true; } } } if(!rotationFinished) { if(angle > 0.1) { print("rotationlast"); transform.rotation = Quaternion.Slerp(startObject.transform.rotation, aimRotation, 0.15);//normal velocity } else { print("rotationTheSame"); rotationFinished = true; transform.rotation = aimRotation; translateBegin = true; } } if(translateBegin) { distance = Vector3.Distance(transform.position, PositionEnd); print(distance); if(distance < 0.1) { print("distance< 0.1"); transform.position = PositionEnd; translateBegin = false; WaitToBlur(); //maincamera.orthographic = true; transform.rotation = aimObjectLocation.transform.rotation; } else { transform.LookAt(aimObject.transform); transform.position = Vector3.Slerp(PositionStart,PositionEnd, 0.08); } }}function WaitToBlur() { // suspend execution for waitTime seconds var blurCamera= maincamera.GetComponent("BlurEffect"); blurCamera.enabled = true; yield WaitForSeconds (0.5); blurCamera.enabled = false;} |
旋转camera到特定对象的更多相关文章
- 让camera实现类似cs第一人称视角旋转和位移
直接把这个脚本挂在摄像机上就可: using System.Collections; using System.Collections.Generic; using UnityEngine; /* * ...
- Raspiberry Camera详解+picamera库+Opencv控制
使用树莓派的摄像头,将树莓派自身提供的picamera的API数据转换为Python Oencv可用图像数据: # import the necessary packages from picamer ...
- Raspberry Camera详解+picamera库+Opencv控制
使用树莓派的摄像头,将树莓派自身提供的picamera的API数据转换为Python Oencv可用图像数据: # import the necessary packages from picamer ...
- Camera三维动画
一.概述 在Android中说到3D开发,我们首先想到的是OpenGL,但用起来比较复杂繁琐,不适合做应用级别的3D变换.Android为我们提供了一个简化版的3D开发入口:Camera(这里的Cam ...
- Cesium中级教程3 - Camera - 相机(摄像机)
Cesium中文网:http://cesiumcn.org/ | 国内快速访问:http://cesium.coinidea.com/ Camera CesiumJS中的Camera控制场景的视图.有 ...
- View动画和属性动画
在应用中, 动画效果提升用户体验, 主要分为View动画和属性动画. View动画变换场景图片效果, 效果包括平移(translate), 缩放(scale), 旋转(rotate), 透明(alph ...
- 用DirectX实现魔方(三)视角变换及缩放(附源码)
在本系列第一篇介绍过鼠标按键的功能,如下. 左键拖拽 - 旋转魔方 右键拖拽 - 变换视角 滚轮 - 缩放魔方 今天研究一下如何实现后面两个功能,用到的技术主要是Arcball,Arcball是实现M ...
- View Transform(视图变换)详解
http://www.cnblogs.com/graphics/archive/2012/07/12/2476413.html 什么是View Transform 我们可以用照相机的原理来阐释3D图形 ...
- Away 3d 基本属性
出处:http://blog.sina.com.cn/s/blog_59f0ac9d0101ci2j.html View3D在初始化时候就已经创建的Camera3D 所以有时候没有创建Camera3D ...
随机推荐
- lightoj1027
//Accepted 1688 KB 0 ms //概率简单题 //假设我们在n个门前加个起点,在n个门后加个终点,起点可以到达n个门, //为正的门可以到达终点,为负的回到起点 //则假设我们从起点 ...
- HDU 4737 A Bit Fun
题意:定义F(i,j)为数组a中从ai到aj的或运算,求使F(i,j)<m的对数. 思路:或运算具有单调性,也就是只增不减,如果某个时刻结果大于等于m了,那么再往后一定也大于等于m.所以可以用两 ...
- vega prime 1.2 (视景仿真)
Vega Prime 1.2 (视景仿真) MPI的视景仿真渲染工具Vega是世界上领先的应用于实时视景仿真.声音仿真和虚拟现实等领域的软件环境,它用来渲染战场仿真.娱乐.城市仿真.训练模拟器和计算可 ...
- 扩展jQuery easyui datagrid增加动态改变列编辑的类型
$.extend($.fn.datagrid.methods, { addEditor : function(jq, param) { if (param instanceof Array) { $. ...
- hdu 2081
PS:...找到好多水题.... #include "stdio.h" int main(){ ]; int i,j,n,N; scanf("%d",& ...
- 在windows上搭建ftp服务
在控制面板->程序和功能->打开或关闭Windows功能中开启ftp和IIS信息服务管理器 在控制面板->管理工具中打开Internet信息服务管理器->添加ftp站点 建好之 ...
- Linux----快速注释包含特定字符串的行
常常会需要将程序中的输出语句注释,往往手工非常慢,而且容易漏. 今天研究了 linux 的 sed, 真心好用.. 例子: 将 包含 cout 的语句注释,也就是说包含cout 语句前加入字符串 / ...
- STL 源码分析《5》---- lower_bound and upper_bound 详解
在 STL 库中,关于二分搜索实现了4个函数. bool binary_search (ForwardIterator beg, ForwardIterator end, const T& v ...
- Unity3D入门(一):环境搭建
1.Unity3D 目前最新正式版本是4.2.1f 官网下载,以前的版本安装时候需要序列号激活,新版本4.2.1f 不需要,完全免费,但发布的时候需要许可证 2.要学习的同学,下载频道可以找到破解补 ...
- HDU3952-几何
题意:给n个水果,每个水果包括m个点(即m条边),判断一刀能切的最多的水果数目: 思路:数据比较小,n <= 10,m <= 10;可以暴力枚举,枚举两个水果的任意两个点,连成一条直线,然 ...