public class FollowCameraController : MonoBehaviour {
float distance = 5f ;
float distanceY = 2f ;
Transform target;
Transform myTransform;
float velocity = 0.1f;
float hevi = 0.5f;
// Use this for initialization
void Start () {
//playerModel = RootServer.instance.GetObject(ROOTObject.Player);
//targetPosition = playerModel.transform.position;
target = GameObject.Find("PlayerModel").transform;
myTransform = transform;
}
private void LateUpdate()
{
FollowTarget();
}
void FollowTarget()
{
//按y軸的旋轉
float targetAngleY = target.eulerAngles.y;
float curAngle = myTransform.eulerAngles.y;
//旋轉中間值
curAngle = Mathf.SmoothDampAngle(curAngle, targetAngleY, ref velocity, 0.5f);
float targetHight = target.position.y + distanceY;
float cameraHight = Mathf.SmoothDamp(myTransform.position.y, targetHight,ref hevi, 1f );
Quaternion currentRotation = Quaternion.Euler(0, curAngle, 0);
myTransform.position = target.transform.position;
myTransform.position += currentRotation * Vector3.back*distance;
myTransform.position = new Vector3(myTransform.position.x, cameraHight, myTransform.position.z);
SetRotation(target.position);
}
float AngleDitance(float a , float b )
{
a = Mathf.Repeat(a, 360);
b = Mathf.Repeat(b, 360);
return Mathf.Abs(b - a);
}
void SetRotation( Vector3 target )
{
Vector3 cameraPos = myTransform.position;
Vector3 horDir = target - cameraPos;
//攝像機朝向
Quaternion yRotate = Quaternion.LookRotation(new Vector3(horDir.x, 0, horDir.z));
Vector3 relativeOffset = Vector3.forward * distance + Vector3.down * distanceY;
myTransform.rotation = yRotate * Quaternion.LookRotation(relativeOffset);
}
void CameraShake( float intputX , float inputY )
{
}
}
實現攝像機跟隨并旋轉
最后編輯于 :
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
- 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
- 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
- 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...