我們通常會遇到不同的場景需要不同的相機視角,例如:第一人稱、第三人稱。
第一人稱的話,可以將輸入控制腳本掛載在Camera上,直接控制Camera的position和rotation來實現;
對於第三人稱,實際上我們控制腳本是用來控制場景中人物的動作的,所以此時我們需要根據人物的姿態的改變對相機姿態做適應性改變,達到相機跟隨的效果。
話不多說,直接上代碼
頂視圖示例:
因為相機要跟隨主角色,所以我這里默認相機(長方塊)位置是相對於角色位置后面距離為10,並且LookAt主角色位置;
所以如何計算相機的位置就顯得很重要。
當主角色沒有發生旋轉(y-up下,y軸旋轉值為0)的時候,相機的位置偏移為
dx = distance * sin(0) = 0;dz = distance * cos(0) = distance.
所以此時相機位置為vec3(men.position.x + dx,men.position.y + 2,men.position.z + dz);
第二張圖同理,所以我們只需要知道每一幀(或者是主角色姿態發生改變的時候)狀態下,主角色的position數據和y軸的旋轉值,就可以相對應算出此時相機應該位於什么位置上
注意:主角色和相機都是在世界坐標系下,或者說擁有相同的父元素。
最后是一張案例效果圖: