1. 程式人生 > >unity攝像機 平滑

unity攝像機 平滑

今天開始看android開發範例中的第三個範例,這裡注意到這個函式Mathf.SmoothDamp的使用,遊戲中用於做相機的緩衝跟蹤,我們其實會留意一些遊戲使用了smoothmove的功能,其實就是類似的效果,只是發現這個函式很容易的已經分裝好了,查了官網文件發現使用起來真的非常簡單。

smoothdamp,我的理解是平滑緩衝,東西不是僵硬的移動而是做減速緩衝運動到指定位置。我們看看程式碼:

12345678public Transform target;        //The playerpublic float smoothTime= 0.3f;  //Smooth Timeprivate Vector2 velocity;       
//Velocityvoid  Update (){//Set the positiontransform.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

 和透視Perspective(有消失點投影)的區別