旋转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 ...
随机推荐
- poj1080 dp
//Accepted 200 KB 0 ms //dp //dp[i][j]表示s1用前i个,s2用前j个字符能得到的最大分数 //dp[i][j]=max(dp[i-1][j]+score[s1[i ...
- adaboost算法
三 Adaboost 算法 AdaBoost 是一种迭代算法,其核心思想是针对同一个训练集训练不同的分类器,即弱分类器,然后把这些弱分类器集合起来,构造一个更强的最终分类器.(很多博客里说的三个臭皮匠 ...
- 在MyEclipse上搭建web服务器
a) Servlet是什么? Servlet(服务器端小程序)是使用Java语言编写的服务器端程序[o1] ,可以使用脚本语言,生成动态的web页. b) Servlet的架构? ...
- Fractal Tree扩展
之前的博客实现了最基础的分形树,在这个基础上略微调整一些参数可以得到很多有趣的由分形树发展出的图案. private void drawShape(Graphics g, double x1, dou ...
- Git ~ 大杀器之一 远程仓库 ~ Git
一般情况ixashi找一台电脑作为服务器的角色 , 每天24小时开机 , 其他扥每个人都从这个 “服务器” 仓库里面克隆一份到自己的电脑上面 并且将各自的提交推送到服务器仓库中 , 也可以从服务器仓库 ...
- ERP部门的添加(十一)
功能需求: 1.有部门管理权限的人员进行添加部门基本信息. 2.有部门权限管理的人员查询部门基本信息. 3.有部门权限管理的人员进行修改部门基本信息. 4.在一个页面中实现,使用弹出对话框方式 存储过 ...
- 前App Store高管揭秘:关于“苹果推荐”的七大真相
相信你已经看过很多这样那样关于如何获得苹果商店推荐的攻略了,但其实很多人依然陷入了很大的误区.前不久采访了前App Store团队高管Greg Essig,向各位开发者揭示关于获得苹果推荐的真相. 在 ...
- NOIP2010 关押罪犯 (并查集)
若x,y有关系 将x与y的补集, y与x的补集建立关系 ; maxm=; ..maxm,..] of longint; f:..maxn*] of longint; i,j,m,n,x,y,z:lon ...
- JavaScript数据结构——栈和队列
栈:后进先出(LIFO)的有序集合 队列:先进先出(FIFO)的有序集合 --------------------------------------------------------------- ...
- java web目录结构
转自:http://blog.csdn.net/javaloveiphone/article/details/7828894 Javaweb项目的源文件与字节码文件的目录结构 1.新建项目的源文件目录 ...