我有一个项目,我在5秒后翻转一张卡,然后我想开始一个x秒的倒数计时器。在x秒后,卡片再次翻转。
我找到了计时器here的一个很好的例子,但它在Update()方法中有效。我的问题来自于卡的旋转也在Update()方法内部。
如果我将计时器放在Update()方法中,只要调用Update()方法,计时器就会启动,我不想让它在调用Update()方法时立即启动它,但是当我想要开始ip时,我翻转卡片后60秒。
如果我将计时器放在Update()以外的方法中,则计时器启动但不会减少。
using UnityEngine;
using System.Collections;
public class Juego1Carta2 : MonoBehaviour
{
public float velocidadDeRotacion = 100.0f;
public Sprite cartaBase;
public Sprite cartaDelantera;
private bool carta2Activada = false;
private bool cartaDeLado = false;
float tiempoDeJuego = 2;
IEnumerator Esperar()
{
yield return new WaitForSeconds(5);
transform.position = new Vector3(Screen.width / 2, Screen.height / 2 +GetComponent<SpriteRenderer>().bounds.size.y, 0);
carta2Activada = true;
Regresa();
}
void Regresa()
{
Update();
}
// Use this for initialization
void Start ()
{
StartCoroutine (Esperar());
}
// Update is called once per frame
void Update ()
{
if (carta2Activada)
{
transform.Rotate(Vector3.up * Time.deltaTime * velocidadDeRotacion);
if (transform.eulerAngles.y >= 90)
{
SpriteRenderer Carta = GetComponent<SpriteRenderer>();
if (Carta.sprite == cartaBase)
{
Carta.sprite = cartaDelantera;
cartaDeLado = true;
carta2Activada = false;
}
else
{
Carta.sprite = cartaBase;
cartaDeLado = true;
carta2Activada = false;
}
tiempoDeJuego = 60;
}
}
tiempoDeJuego -= Time.deltaTime;
if (tiempoDeJuego <= 0)
{
print("Fin del tiempo");
}
if (cartaDeLado)
{
transform.Rotate(Vector3.up * Time.deltaTime * velocidadDeRotacion);
if (transform.eulerAngles.y >= 180)
{
transform.eulerAngles = new Vector3(0, 0, 0);
cartaDeLado = false;
carta2Activada = false;
return;
}
}
}
}
有没有办法旋转卡片并同时制作倒数计时器?
对不起,也许这是一个非常明显的问题,但连续3天工作之后,我不仅仅是倦怠......
答案 0 :(得分:0)
在这个if语句中使用你设置定时器的时间来执行60秒后的代码,如果我理解你的问题就是这样的话
if (cartaDeLado)
{
if (tiempoDeJuego <= 0){ // dont execute any of the code unless 60
// seconds is up
transform.Rotate(Vector3.up * Time.deltaTime * velocidadDeRotacion);
if (transform.eulerAngles.y >= 180)
{
transform.eulerAngles = new Vector3(0, 0, 0);
cartaDeLado = false;
carta2Activada = false;
return;
}
}
}