1.關于相機
1.相機跟隨
第一步:找一個舒服的視角柑船,將相機視野對準視角 (view to algin)
第二步:相機添加腳本
第三步:利用相機與玩家位置的偏移量
offset = transform.position - player_transform.position
第四步:將相機位置設置為玩家位置加上offset
transform.position = player_transform.position + offset
注意點:四步完成可以簡單實現(xiàn)相機跟隨
第一曹质,遇到死角遮擋比搭。第二,某些時刻滑動會有卡頓,用戶體驗不好
有以下的解決方式
首先,我們看一張圖
分析圖.png
- 我們模擬出這么一種情況荸实,玩家走到墻角,如圖所示缴淋,被墻擋住攝像機准给,那我們就看不見我們的角色了。
- 我們的解決方案就是重抖,利用攝像機向角色發(fā)射射線露氮,再利用角色的垂直方向,得出相機需要運動的方向钟沛,同時在運動方向截取3個點畔规,在3個點同時發(fā)射射線,判斷是不是射線與角色產(chǎn)生碰撞恨统。如果射線并沒有與角色碰撞油讯,而是與其他物體碰撞,那么可以判斷為延欠,該攝像機位置被遮擋,我們就將攝像機按順序往后移動沈跨。最壞的結果就是攝像機移動角色垂直方向由捎,如圖中攝像機2的位置。這樣就可以在死角也能夠看到角色饿凛。
技術要點
1.均勻取射線點狞玛,用到以下方法
Vector3.Lerp();
2.發(fā)射射線
RayCastHit hitInfo;
if (Physics.RayCast(...,...,out hitInfo)){
//do some thing
}
完成這些后還不夠,因為移動相機涧窒,會卡頓心肪,體驗極其不友好,所以這里需要用到部分插值運算纠吴。
以下是緩動代碼部分
transform.position = Vector3.Lerp(transform.position, newPos, Time.deltaTime * moveSpeed);
Quaternion oldRotation = transform.rotation;
transform.LookAt(player_transform.position);
transform.rotation = Quaternion.Lerp(oldRotation, transform.rotation, Time.deltaTime * rotateSpeed);
至此硬鞍,攝像機腳本初步完成,有些地方,根據(jù)自己需要自行修改固该。