2015-06-24 105 views
0

我正在使用Unity 5附帶的標準camera2DFollow腳本。但是我的相機位置有問題。我旋轉了主攝像頭,現在看起來像這樣。Unity 5 - 編輯camera2DFollow腳本

Example

你看,我的球員是在屏幕上而不是中間的頂部。

這是C#中的默認腳本,供沒有它的人使用。

using System; 
using UnityEngine; 

namespace UnityStandardAssets._2D 
{ 
public class Camera2DFollow : MonoBehaviour 
{ 
    public Transform target; 
    public float damping = 1; 
    public float lookAheadFactor = 3; 
    public float lookAheadReturnSpeed = 0.5f; 
    public float lookAheadMoveThreshold = 0.1f; 

    private float m_OffsetZ; 
    private Vector3 m_LastTargetPosition; 
    private Vector3 m_CurrentVelocity; 
    private Vector3 m_LookAheadPos; 

    // Use this for initialization 
    private void Start() 
    { 
     m_LastTargetPosition = target.position; 
     m_OffsetZ = (transform.position - target.position).z; 
     transform.parent = null; 
    } 


    // Update is called once per frame 
    private void Update() 
    { 
     // only update lookahead pos if accelerating or changed direction 
     float xMoveDelta = (target.position - m_LastTargetPosition).x; 

     bool updateLookAheadTarget = Mathf.Abs(xMoveDelta) > lookAheadMoveThreshold; 

     if (updateLookAheadTarget) 
     { 
      m_LookAheadPos = lookAheadFactor*Vector3.right*Mathf.Sign(xMoveDelta); 
     } 
     else 
     { 
      m_LookAheadPos = Vector3.MoveTowards(m_LookAheadPos, Vector3.zero, Time.deltaTime*lookAheadReturnSpeed); 
     } 

     Vector3 aheadTargetPos = target.position + m_LookAheadPos + Vector3.forward*m_OffsetZ; 
     Vector3 newPos = Vector3.SmoothDamp(transform.position, aheadTargetPos, ref m_CurrentVelocity, damping); 

     transform.position = newPos; 

     m_LastTargetPosition = target.position; 
     } 
    } 
} 

我想將Y更改爲當前位置的+3。所以如果我的相機在Y 2上,而不是在Y 5上。(這使得玩家處於中間而不是頂部)。

感謝您的幫助!

回答

2

您可以通過在每個幀的末尾添加3到相機的位置來做到這一點,但我建議不要這樣做。

我想要做的是創建一個空對象,將其命名爲「PlayerCameraCenter」,並使該對象成爲父對象;然後將相機中心放置在相對於播放器的任何位置,比如y = 3,並使相機跟隨此對象而不是播放器。

這樣,您可以輕鬆地通過編輯器輕鬆更改攝像頭的位置,而不需要用代碼來擺弄。

+0

謝謝!沒有想到這個!我對Unity有點新鮮 –