2015-11-04 3 views
0

Привет, ребята, я пытаюсь переключить камеру в соответствии с моим игровым представлением здесь, что я хотел, сначала мой MainCam1 переключится на cam2 после этого, когда настройка булавки завершена, тогда она должна вернуться в 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

Добавьте эти переменные в верхней части класса:

Vector3 cam1StartPos; 
Vector3 cam2StartPos; 

Затем поместите это в Start():

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

Затем, когда вы хотите сбросьте положение любой камеры, у вас есть начальная позиция.

+0

Но в вашем коде нет обновления кадра. Фактически камера переключается на cam2, но я хотел, чтобы cam2 также переключился на Maincam1 также –

+0

Можете ли вы перефразировать свою проблему? – user3071284

Смежные вопросы