C# 如何再次将相机切换到起始位置?
大家好,我正在尝试根据我的游戏视图切换摄像头,我想要的是,首先我的主摄像头1将切换到摄像头2,然后在完成pin设置后,它将切换回主摄像头1,并且无论何时进行操作,都应处于循环中。 我将感谢你的帮助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
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;