在unity中做相機觀察某個物件的時候會經常用到這個功能,就是我可以上下左右任意角度觀察這個物件,那麼根據這個需求,咱們看需要哪些變數 1.觀察物件 2.相機位置 3.相機移動引數設定 ,閾值範圍等
///
/// 觀察物件
///
public transform target;
///
/// 橫向移動的速度
///
public float xspeed = 200;
public float yspeed = 200;
///
/// 拉近拉遠時的移動速度
///
public float mspeed = 10;
///
/// 上下觀察時的觀察範圍
///
public float yminlimit = -50;
public float ymaxlimit = 50;
///
/// 拉近拉遠時的相機範圍限制
///
public float distance = 2;
public float mindistance = 2;
public float maxdistance = 30;
///
/// 相機高度
///
public float camheight = 2;
///
/// 是否要緩動效果
///
public bool needdamping = true;
float damping = 5.0f;
///
/// 拖動時的速度偏移量
///
public float x = 0.0f;
public float y = 0.0f;
那麼剛開始的時候,咱們xu
需要先把相機當前的角度記錄下來
vector3 angles = transform.eulerangles;
x = angles.y;
y = angles.x;
然後等咱們按下滑鼠右鍵進行拖動時,咱們可以根據mou***和mousey來記錄pi偏移量,把這個偏移量儲存za在x和y中,這樣咱們可以得出乙個相機需要的旋轉角度
if (input.getmousebutton(1))
根據需求咱們可以得出,實際上就是保持相機和觀察物件之間的向量長度不變,讓這個向量繞咱們記錄的角度偏移量旋轉即可,所以接下來確定相機的位置
distance -= input.getaxis("mouse scrollwheel") * mspeed;
distance = mathf.clamp(distance, mindistance, maxdistance);
quaternion rotation = quaternion.euler(y, x, 0.0f);
vector3 disvector = new vector3(0.0f, 0, -distance);
vector3 position = rotation * disvector + new vector3(target.position.x,target.position.y+camheight,target.position.z);
最後加上是否需要緩動效果
if (needdamping)
else
transform.lookat(target);
}
NSInvocation直接呼叫某個物件的訊息
在 ios中可以直接呼叫某個物件的訊息方式有兩種 一種是performselector withobject 再一種就是nsinvocation。第一種方式比較簡單,能完成簡單的呼叫。但是對於 2個的引數或者有返回值的處理,那就需要做些額外工作才能搞定。那麼在這種情況下,我們就可以使用nsinvoc...
判斷物件陣列中是否含有某個物件。
var json1 var json2 function mergearr json1,json2 return keyarr console.log mergearr json1.addroledata,json2.addroledata 判斷的主要在於if json.stringify json...
iOS呼叫某個物件的方法
在 ios中可以直接呼叫某個物件的訊息方式有兩種 一種是performselector withobject 再一種就是nsinvocation。第一種方式比較簡單,能完成簡單的呼叫。但是對於 2個的引數或者有返回值的處理,那performselector withobject就顯得有點有心無力了,...