旋转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 ...
随机推荐
- Oracle数据库中序列用法讲解
序列(SEQUENCE)是序列号生成器,可以为表中的行自动生成序列号,产生一组等间隔的数值(类型为数字).其主要的用途是生成表的主键值,可以在插入语句中引用,也可以通过查询检查当前值,或使序列增至下一 ...
- Varnost slovenskih GSM omrežij III
V torek smo pisali tudi o tem, da Si.Mobil v svojem omrežju dovoli uporabo A5/0 (nešifriranega preno ...
- cookie 内容的获取
NSMutableArray *cookiesStoreAll = [[NSMutableArray alloc]init]; NSUInteger totalNumberOfCookies; ...
- linux常用命令6:关机重启命令
关机重启命令 1.shutdown命令 shutdown [选项] 时间 选项: -c 取消前一个关机命令 -h 关机 -r 重启 2.其他关机命令 halt poweroff init 0 3.其 ...
- Java Serializable
实现Serializable的class表明object可以被保存. 被保存的时候实际是存储class里的instance variable,这样在deserialization的时候可以恢复obje ...
- Eclipse的maven构建一个web项目,以构建SpringMVC项目为例
http://www.cnblogs.com/javaTest/archive/2012/04/28/2589574.html springmvc demo实例教程源代码下载:http://zuida ...
- 收集Magento FAQ常见问题处理办法
问题:Magento如何下载? 解答:Magento的英文官方下载地址为:http://www.magentocommerce.com/download 注意:需要注册后才可以下载,而且请下载完整版本 ...
- ‘Cordova/CDVViewController.h’ file not found Xcode 7.1
Add this line to your Build Settings -> Header Search Paths: "$(OBJROOT)/UninstalledProducts ...
- LeetCode Subsets II (DFS)
题意: 给一个集合,有n个可能相同的元素,求出所有的子集(包括空集,但是不能重复). 思路: 看这个就差不多了.LEETCODE SUBSETS (DFS) class Solution { publ ...
- R中NA和NaN的区别
NA表示的是缺失数据,missing data NaN表示无意义的数据,Not a Number, Inf-Inf Inf表示正无穷大 -Inf表示负无穷大