2017-09-05 69 views
0

我已經擁有了播放器後面的統一默認相機。但我希望它可以在一個角色和另一個角色之間切換,具體取決於我激活的那個角色。到目前爲止,所有我是...有沒有辦法讓相機在遊戲中跟隨不同的遊戲對象? c#2d

using UnityEngine; 
using System.Collections; 

public class cameraFollow : MonoBehaviour { 

public Transform player; 
public Transform player2; 

void Update() 
{ 
    transform.position = new Vector3 (player.position.x + .5f, player.position.y + .55f, -7.2f); 
    } 
    if(Input.GetKeyDown(KeyCode.Space)){ 
    //switch to player2 
    } 
} 

有沒有辦法做到這一點或某事我應把重點放在學習只是什麼呢?謝謝。

回答

0

NVM我明白了。感謝Xying讓我開始使用代碼,這非常重要。這是現在的代碼。

using UnityEngine; 
using System.Collections; 

public class cameraFollow : MonoBehaviour { 

public Transform player; 
public Transform player2; 
private bool idleFollow = true; 
private bool mountFollow = false; 

void Update() 
{ 
    if (!mountFollow && idleFollow && Input.GetKeyDown (KeyCode.Space)) 
    { 
     mountFollow = true; 
     idleFollow = false; 
     return; 
    } 

    if (mountFollow && !idleFollow && Input.GetKeyDown(KeyCode.Space)) 
    { 
     idleFollow = true; 
     mountFollow = false; 
     return; 
    } 

    if (idleFollow && !mountFollow) 
    { 
     transform.position = new Vector3 (player.position.x + .5f, player.position.y + .55f, -7.2f); 
    } 

    if (mountFollow && !idleFollow) 
    { 
     transform.position = new Vector3 (player2.position.x + .5f, player2.position.y + .55f, -7.2f); 
    } 
} 

}

2

首先,看起來您的代碼無法編譯,因爲if語句位於可以執行的任何塊之外。仔細檢查括號並相應地縮進代碼。

要達到您的要求,請執行以下操作。添加else塊,還有移動當前的跟蹤代碼,並在現有的if塊添加後續代碼爲其他對象:

if (Input.GetKeyDown(KeyCode.Space)) { 
    transform.position = new Vector3(player2.position.x + .5f, player2.position.y + .55f, -7.2f); 
} 
else { 
    transform.position = new Vector3(player.position.x + .5f, player.position.y + .55f, -7.2f); 
} 

確保讓所有上面的代碼中Update方法。

您可能還想考慮除去幻數,如.5f,.55f-7.2f,並將它們替換爲命名變量。例如,var offset = new Vector3(.5f, .55f, -7.2f)可能沒問題。

作爲一般性建議,這將有助於首先提高您的編程技能。我懷疑創建遊戲時的學習是一種保持動力的好方法,但同時,如果你更熟悉一般的編程,就會遇到這樣的問題,這很容易避免。雖然沒有錯誤的學習方式,所以如果這對你來說是一種很好的方式,那就去做吧!

+0

Ø確定。我下班後回家後會嘗試。對不起,這個小錯誤順便說一句,我原本在劇本中並沒有這樣的錯誤,我只是把那裏作爲一個例子來說明我正在努力完成的事情,以使它更清晰一些。我絕對不會在未來的問題中再次這樣做haha –

+0

嘿,對不起,我還沒有回覆。無論如何,該代碼只能以一種方式工作。我希望你能夠來回切換相機。到目前爲止,它遵循一個而不是另一個。當我使用代碼將其切換回來時,相機會跳到它的位置,但不會在它移動時跟着它。 –

+0

您需要在字段中存儲您當前跟隨的對象,當您按下開關鍵時(或者觸發您的開關),您將更新該對象。然後在Update方法中相應地設置您的位置。 – Xiyng