[Resolvido] Coroutine
2 participantes
Página 1 de 1
[Resolvido] Coroutine
Boa tarde.
Estou aprendendo a mexer com o Coroutine e estou tendo alguns problemas em minha jornada...
Meu objetivo: instanciar 6 facas em torno do meu personagem, mas as facas não vão instanciar ao mesmo tempo. Quero fazer uma contagem crescente, instanciar uma faca de cada vez. Quando instanciar uma faca, esperar 1 segundo e instanciar a próxima, é isso que quero fazer.
Se eu fosse utilizar um simples Time.deltaTime, meu script ficaria com umas 100 linhas só disso. Por isso acho que o Coroutine se encaixaria melhor nisso ai.
Pensei desta forma:
Mas as facas instanciam todas de uma vez o.O. Alguém pode me ajudar?
Estou aprendendo a mexer com o Coroutine e estou tendo alguns problemas em minha jornada...
Meu objetivo: instanciar 6 facas em torno do meu personagem, mas as facas não vão instanciar ao mesmo tempo. Quero fazer uma contagem crescente, instanciar uma faca de cada vez. Quando instanciar uma faca, esperar 1 segundo e instanciar a próxima, é isso que quero fazer.
Se eu fosse utilizar um simples Time.deltaTime, meu script ficaria com umas 100 linhas só disso. Por isso acho que o Coroutine se encaixaria melhor nisso ai.
Pensei desta forma:
- Código:
using UnityEngine;
using System.Collections;
public class BladeAttacks : MonoBehaviour {
[Header("ExplosionBlade")]
public GameObject blade;
public Transform[] spawnPos;
private bool startExplosionBlade;
// Update is called once per frame
void Update () {
if(Input.GetKeyDown(KeyCode.J)){
startExplosionBlade = true;
ExplosionBlade();
}
}
public void ExplosionBlade()
{
if(startExplosionBlade)
{
Instantiate(blade, spawnPos[0].position, spawnPos[0].rotation);
StartCoroutine(Wait(1.0f));
Instantiate(blade, spawnPos[1].position, spawnPos[1].rotation);
StopCoroutine("Wait");
StartCoroutine(Wait(1.0f));
Instantiate(blade, spawnPos[2].position, spawnPos[2].rotation);
StopCoroutine("Wait");
StartCoroutine(Wait(1.0f));
Instantiate(blade, spawnPos[3].position, spawnPos[3].rotation);
StopCoroutine("Wait");
StartCoroutine(Wait(1.0f));
Instantiate(blade, spawnPos[4].position, spawnPos[4].rotation);
StopCoroutine("Wait");
StartCoroutine(Wait(1.0f));
Instantiate(blade, spawnPos[5].position, spawnPos[5].rotation);
StopCoroutine("Wait");
startExplosionBlade = false;
}
}
IEnumerator Wait(float time){
yield return new WaitForSeconds(time);
}
}
Mas as facas instanciam todas de uma vez o.O. Alguém pode me ajudar?
Última edição por George Lucas Vieira em Qua Set 07, 2016 8:49 pm, editado 1 vez(es)
George Lucas Vieira- Avançado
- PONTOS : 3392
REPUTAÇÃO : 132
Idade : 21
Áreas de atuação : Programação, Modelagem e Animação.
Respeito as regras :
Re: [Resolvido] Coroutine
Tente algo assim mano(não testado kk):
- Código:
using UnityEngine;
using System.Collections;
public class BladeAttacks : MonoBehaviour {
[Header("ExplosionBlade")]
public GameObject blade;
public Transform[] spawnPos;
private bool startExplosionBlade;
// Update is called once per frame
void Update () {
if(Input.GetKeyDown(KeyCode.J) && !startExplosionBlade){
StartCoroutine(ExplosionBlade();
}
}
IEnumerator ExplosionBlade(){
int i = 0;
Instantiate(blade, spawnPos[i].position, spawnPos[i].rotation);
while(i<5)
{
yield return new WaitForSeconds(time);
i++;
Instantiate(blade, spawnPos[i].position, spawnPos[i].rotation);
}
startExplosionBlade = false;
}
}
Re: [Resolvido] Coroutine
Funcionou certinho amigo! Valeu man!
George Lucas Vieira- Avançado
- PONTOS : 3392
REPUTAÇÃO : 132
Idade : 21
Áreas de atuação : Programação, Modelagem e Animação.
Respeito as regras :
Tópicos semelhantes
» Resolvido
» Coroutine & IEnumerator. O que são?
» Coroutine ou Invoke - qual tem melhor desempenho
» Como usar uma coroutine para esperar um objeto se movimentar?
» [RESOLVIDO] Verificar se um texto é um email [RESOLVIDO]
» Coroutine & IEnumerator. O que são?
» Coroutine ou Invoke - qual tem melhor desempenho
» Como usar uma coroutine para esperar um objeto se movimentar?
» [RESOLVIDO] Verificar se um texto é um email [RESOLVIDO]
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos