Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何再次将相机切换到起始位置?_C#_Unity3d - Fatal编程技术网

C# 如何再次将相机切换到起始位置?

C# 如何再次将相机切换到起始位置?,c#,unity3d,C#,Unity3d,大家好,我正在尝试根据我的游戏视图切换摄像头,我想要的是,首先我的主摄像头1将切换到摄像头2,然后在完成pin设置后,它将切换回主摄像头1,并且无论何时进行操作,都应处于循环中。 我将感谢你的帮助 using UnityEngine; using UnityEngine.UI; using System.Collections; public class PinCounter : MonoBehaviour { public Text standingDisplay; priv

大家好,我正在尝试根据我的游戏视图切换摄像头,我想要的是,首先我的主摄像头1将切换到摄像头2,然后在完成pin设置后,它将切换回主摄像头1,并且无论何时进行操作,都应处于循环中。 我将感谢你的帮助

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(){

    }
}

将以下变量添加到类的顶部:

Vector3 cam1StartPos;
Vector3 cam2StartPos;
然后把这个放在开始:


然后,每当您想重置任一摄像头的位置时,您都可以在手边找到起始位置。

有什么问题吗?您是否有任何错误或您的代码不起作用?但在您的代码中没有帧更新实际上相机正在切换到cam2,但我想要的是cam2必须更改为MAIN CAM1 ALSOC您可以重新表述您的问题吗?
cam1StartPos = Maincam1.gameObject.transform.position;
cam2StartPos = cam2.gameObject.transform.position;