2015-11-04 36 views
0

大家好我想根據我的遊戲視圖切換攝像頭我想要的是首先我的MainCam1將切換到CAM2之後,當PIN解決完成後,它應該切換回Maincam1,並且這應該在循環中,被製成。 我會感謝你的幫助如何將相機再次切換到起始位置?

using UnityEngine; 
using UnityEngine.UI; 
using System.Collections; 

public class PinCounter : MonoBehaviour { 
    public Text standingDisplay; 
    private GameManager gameManager; 
    private bool ballOutOfPlay = false; 
    private int lastStandingCount = -1; 
    private int lastSettledCount = 10; 
    private float lastChangeTime; 
    public Camera Maincam1; 
    public Camera cam2; 

    // Use this for initialization 
    void Start() { 
     Maincam1.enabled = true; 
     cam2.enabled = false; 
     gameManager = GameObject.FindObjectOfType<GameManager>(); 
    } 

    // Update is called once per frame 
    void Update() { 
     standingDisplay.text = CountStanding().ToString(); 

     if (ballOutOfPlay) { 
      UpdateStandingCountAndSettle(); 
      standingDisplay.color = Color.red; 
      Maincam1.enabled = false; 
      cam2.enabled = true; 
     } 
    } 

    public void Reset() { 
     lastSettledCount = 10; 
    } 

    void OnTriggerExit (Collider collider) { 
     if (collider.gameObject.name == "Ball") { 
      ballOutOfPlay = true; 
     } 
    } 

    void UpdateStandingCountAndSettle() { 
     // Update the lastStandingCount 
     // Call PinsHaveSettled() when they have 
     int currentStanding = CountStanding(); 
     cam2.enabled = false; 
     Maincam1.enabled = true; 
     if (currentStanding != lastStandingCount) { 
      lastChangeTime = Time.time; 
      lastStandingCount = currentStanding; 

      return; 
     } 

     float settleTime = 0.3f; // How long to wait to consider pins settled 
     if ((Time.time - lastChangeTime) > settleTime) { // If last change > 3s ago 
      PinsHaveSettled(); 


     } 

    } 

    void PinsHaveSettled() { 
     int standing = CountStanding(); 
     int pinFall = lastSettledCount - standing; 
     lastSettledCount = standing; 

     gameManager.Bowl (pinFall); 


     lastStandingCount = -1; // Indicates pins have settled, and ball not back in box 
     ballOutOfPlay = false; 
     standingDisplay.color = Color.green; 


    } 

    int CountStanding() { 
     int standing = 0; 

     foreach (Pin pin in GameObject.FindObjectsOfType<Pin>()) { 
      if (pin.IsStanding()) { 
       standing++; 

      } 
     } 

     return standing; 
    } 
    void LateUpdate(){ 

    } 
} 
+1

什麼是問題?你有任何錯誤或者你的代碼不工作? –

回答

0

這些變量添加到您的類的頂部:只要你想

cam1StartPos = Maincam1.gameObject.transform.position; 
cam2StartPos = cam2.gameObject.transform.position; 

然後:

Vector3 cam1StartPos; 
Vector3 cam2StartPos; 

然後把這個Start()重置任一相機的位置,您的起始位置得心應手。

+0

但在你的代碼中實際上沒有幀更新攝像頭正在切換到CAM2,但我想要的是,CAM2也必須更改爲Maincam1 –

+0

您能否重新解釋您的問題? – user3071284

相關問題