今天开始看android开发范例中的第三个范例,这里注意到这个函数Mathf.SmoothDamp的使用,游戏中用于做相机的缓冲跟踪,我们其实会留意一些游戏使用了smoothmove的功能,其实就是类似的效果,只是发现这个函数很容易的已经分装好了,查了官网文档发现使用起来真的非常简单。
smoothdamp,我的理解是平滑缓冲,东西不是僵硬的移动而是做减速缓冲运动到指定位置。我们看看代码:
1
2
3
4
5
6
7
8
|
public
Transform target;
//The player
public
float
smoothTime= 0.3f;
//Smooth Time
private
Vector2 velocity;
//Velocity
void
Update ()
{
//Set the position
transform.position =
new
Vector3(Mathf.SmoothDamp(transform.position.x, target.position.x,
ref
velocity.x, smoothTime),Mathf.SmoothDamp( transform.position.y, target.position.y,
ref
velocity.y, smoothTime),transform.position.z);
}
|
这里稍微做一下讲解,target(跟踪的目标)、smoothtime(缓冲时间,时间越大缓冲速度越慢,移动也越慢)、velocity(相对缓冲减速,看起来很屌很复杂,事实上我们根本不用理睬他,它只是用作一个承载变量,我们只要默认赋值其实就是0就可以了)。
在update中,本物体(其实就是camera)的移动至做x轴和y轴移动,因为是横版游戏嘛~,大家其实可以吧velocity直接指定成一个float值,直接使用就是了。
好吧,大概讲解到此,希望帮到各位~
来源https://blog.csdn.net/u011285268/article/details/922938
恶补下unity camera 知识
projection 里有 orthographic(无消失点投影) 和透视Perspective(有消失点投影)的区别
orthographic
无法判断距离
正交视图无法看到一个物体是远离自己还是正在我们面前。为什么?
因为它不会根据距离收缩。所以如果你如果你画一个固定大小的物体在视点前面,同时画一个同样大小的物体在第一个物体的远后方,你无法说那个物体是第一个。
因为两个都是一样的大小,根距离无关。他们不会随着距离而收缩。
和透视Perspective(有消失点投影)的区别UI或2D游戏使用正交相机
和透视Perspective(有消失点投影)的区别
通常我们在unity中制作2D UI,或是2D游戏的时候,就会把Camera的投射选择此项,例如NGUI的UICamera组件,默认的视图就是正交,还有2DTookit,也会把Main Camera的视图选择成正交。
透视Perspective(有消失点投影)
透视视图和我们从眼睛看到的视图是一样的。
例子:远小近大
一个高个子的人站在你面前,他看上去是很高的。
但是如果这个高个子站在100米以外,他甚至还没有你的拇指大。他看上去会随着距离而缩小,但是我们实际上都知道,它依然是个高个子。这种效果叫做透视。
例子中提到的两个物体,第二个物体将会显示地更小,所以我们可以区分哪个是离我们近的物体,那个是离我们远的物体。
来源:https://www.cnblogs.com/zhaoqingqing/archive/2013/09/05/3302484.html