Após um inimigo morrer, o outro surgir a partir de uma array
2 participantes
Página 1 de 1
Após um inimigo morrer, o outro surgir a partir de uma array
Olá, estou tentando fazer com que após um inimigo morrer, outro surja dentro de uma array que que criei, mas após o último da array morrer, não está voltando ao começo dela para então começar de novo o spawn de monstros a partir do primeiro da lista.
Aqui está meu código:
Alguém poderia me ajudar?
Aqui está meu código:
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class GameController : MonoBehaviour
{
public GameController instance;
public GameObject[] enemies;
public bool canBeInvoked;
public int inim;
public float spawnTime;
public float spawnDelay;
int i = 0;
private void Awake()
{
instance = this;
}
private void Start()
{
GameObject _ = Instantiate(enemies[0]) as GameObject;
}
private void Update()
{
inim = GameObject.FindGameObjectsWithTag("Enemy").Length;
if (Enemy.instance.currentHealth <= 0 && inim < 1)
{
i += 1;
GameObject _ = Instantiate(enemies[i]) as GameObject;
}
else if (Enemy.instance.currentHealth <= 0 && inim == 1)
{
i = 0;
GameObject _ = Instantiate(enemies[i]) as GameObject;
}
}
}
Alguém poderia me ajudar?
darkrj- Avançado
- PONTOS : 2327
REPUTAÇÃO : 15
Respeito as regras :
Re: Após um inimigo morrer, o outro surgir a partir de uma array
PS: Algumas variáveis declaradas estão inutilizadas, pois eu testei algumas coisas antes de chegar nesse código atual.
darkrj- Avançado
- PONTOS : 2327
REPUTAÇÃO : 15
Respeito as regras :
Re: Após um inimigo morrer, o outro surgir a partir de uma array
Olha, acho que irá ter que mudar o script, tente por esse, se nao funcionar me avise:
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class GameController : MonoBehaviour
{
public GameController instance;
public GameObject[] enemies;
public int inim;
private void Awake()
{
instance = this;
}
private void Start()
{
enemies = GameObject.FindGameObjectsWithTag("Enemy");
GameObject _ = Instantiate(enemies[0]) as GameObject;
}
private void Update()
{
if (Enemy.instance.currentHealth <= 0)
{
inim++;
GameObject _ = Instantiate(enemies[inim]) as GameObject;
}
}
}
Pokedlg- ProgramadorMaster
- PONTOS : 2340
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras :
Re: Após um inimigo morrer, o outro surgir a partir de uma array
Não funcionou...Pokedlg escreveu:Olha, acho que irá ter que mudar o script, tente por esse, se nao funcionar me avise:
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class GameController : MonoBehaviour
{
public GameController instance;
public GameObject[] enemies;
public int inim;
private void Awake()
{
instance = this;
}
private void Start()
{
enemies = GameObject.FindGameObjectsWithTag("Enemy");
GameObject _ = Instantiate(enemies[0]) as GameObject;
}
private void Update()
{
if (Enemy.instance.currentHealth <= 0)
{
inim++;
GameObject _ = Instantiate(enemies[inim]) as GameObject;
}
}
}
darkrj- Avançado
- PONTOS : 2327
REPUTAÇÃO : 15
Respeito as regras :
Pokedlg- ProgramadorMaster
- PONTOS : 2340
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras :
Re: Após um inimigo morrer, o outro surgir a partir de uma array
No caso, eu fiz esse script e ele vai trocando normalmente entre os inimigos da array, mas eu preciso fazer depois resetar a array dnv e repassar os inimigos. Tem alguma ideia do que posso fazer?Pokedlg escreveu:Da algum erro?
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class GameController : MonoBehaviour
{
public GameController instance;
public GameObject[] enemies;
public int inim;
private void Awake()
{
instance = this;
}
private void Start()
{
GameObject _ = Instantiate(enemies[0]) as GameObject;
}
private void Update()
{
inim = GameObject.FindGameObjectsWithTag("Enemy").Length;
if (Enemy.instance.currentHealth <= 0)
{
inim++;
GameObject _ = Instantiate(enemies[inim]) as GameObject;
}
}
}
darkrj- Avançado
- PONTOS : 2327
REPUTAÇÃO : 15
Respeito as regras :
Re: Após um inimigo morrer, o outro surgir a partir de uma array
Cara quantos inimigos voce tem com a tag "Enemy"? Isso nao faz muito sentido, voce está colocando inim como a quantidade de inimigos com a tag, isso é bem estranho, ja que era pra ser um variavel que vai aumentando e instanciando de acordo com a array, e o primeiro index é sempre o 0, parece que está começando com o ultimo, ex. Se ter 5 inimigos, inim vai ser 5 e vai instanciar o 5° index da array. Confuso, mas se está funcionando...
Pokedlg- ProgramadorMaster
- PONTOS : 2340
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras :
Re: Após um inimigo morrer, o outro surgir a partir de uma array
darkrj escreveu:No caso, eu fiz esse script e ele vai trocando normalmente entre os inimigos da array, mas eu preciso fazer depois resetar a array dnv e repassar os inimigos. Tem alguma ideia do que posso fazer?Pokedlg escreveu:Da algum erro?
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class GameController : MonoBehaviour
{
public GameController instance;
public GameObject[] enemies;
public int inim;
private void Awake()
{
instance = this;
}
private void Start()
{
GameObject _ = Instantiate(enemies[0]) as GameObject;
}
private void Update()
{
inim = GameObject.FindGameObjectsWithTag("Enemy").Length;
if (Enemy.instance.currentHealth <= 0)
{
inim++;
GameObject _ = Instantiate(enemies[inim]) as GameObject;
}
}
}
Bom, nao sei se vai funcionar pq parece que inim nunca é 0... A nao ser que voce nao tenha nenhum objeto com a tag "Enemy". Coloca isso quando voce for quere resetar.
- Código:
inim = 0;
GameObject _ = Instantiate(enemies[inim]);
Pokedlg- ProgramadorMaster
- PONTOS : 2340
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras :
Re: Após um inimigo morrer, o outro surgir a partir de uma array
Eu tenho 2 inimigos com a tag "Enemy", porém eu queria que ao término da array, retornar para o primeiro inimigo e repassar todos novamente. Eu pensei em pegar e tirar o número máximo da array e depois criar um if de que se inim > tamanho da minha array, ele resetaria até o primeiro ponto, porém não tive a idéia ainda de como fazer isso.Pokedlg escreveu:darkrj escreveu:No caso, eu fiz esse script e ele vai trocando normalmente entre os inimigos da array, mas eu preciso fazer depois resetar a array dnv e repassar os inimigos. Tem alguma ideia do que posso fazer?Pokedlg escreveu:Da algum erro?
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class GameController : MonoBehaviour
{
public GameController instance;
public GameObject[] enemies;
public int inim;
private void Awake()
{
instance = this;
}
private void Start()
{
GameObject _ = Instantiate(enemies[0]) as GameObject;
}
private void Update()
{
inim = GameObject.FindGameObjectsWithTag("Enemy").Length;
if (Enemy.instance.currentHealth <= 0)
{
inim++;
GameObject _ = Instantiate(enemies[inim]) as GameObject;
}
}
}
Bom, nao sei se vai funcionar pq parece que inim nunca é 0... A nao ser que voce nao tenha nenhum objeto com a tag "Enemy". Coloca isso quando voce for quere resetar.
- Código:
inim = 0;
GameObject _ = Instantiate(enemies[inim]);
darkrj- Avançado
- PONTOS : 2327
REPUTAÇÃO : 15
Respeito as regras :
Re: Após um inimigo morrer, o outro surgir a partir de uma array
Olha, tente fazer assim, coloque a sua array de inimigo (enemies) como 0, depois, coloque este script, estrei explicando o que cada coisa faz:
Foi criado um loop, que após voce matar um inimigo irá instanciar o próximo, e assim infinatamente.
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class GameController : MonoBehaviour
{
public GameController instance;
public GameObject[] enemies;
public int inim;
private void Awake()
{
instance = this;
}
private void Start()
{
enemies = GameObject.FindGameObjectsWithTag("Enemy"); //sua array irá detectar todos objetos na cena e colocar nesta array
GameObject _ = Instantiate(enemies[0]) as GameObject; // irá instanciar o objeto que está no index 0
}
private void Update()
{
if (Enemy.instance.currentHealth <= 0)
{
inim++; //inim irá ficar aumentando para cada currentHealth chegado a 0
GameObject _ = Instantiate(enemies[inim]) as GameObject; irá instanciar conforme ele aumenta, se matou um inimigo, instancia o próximo
}
if(inim >= enemies.Length) //se inim passar do tamanho da array
{
inim = 0; //inim se tornará 0 novamente
GameObject _ = Instantiate(enemies[inim]); //instanciando o index 0, e recomeçando tudo de novo
}
}
}
Foi criado um loop, que após voce matar um inimigo irá instanciar o próximo, e assim infinatamente.
Pokedlg- ProgramadorMaster
- PONTOS : 2340
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras :
Re: Após um inimigo morrer, o outro surgir a partir de uma array
Olhando o seu código, pude perceber o meu erro. Estava colocando findobjects no update, então ele estava fazendo a varredura da quantidade de inimigos com a tag toda hora, nisso sempre que ele caia na condição de acréscimo ou decréscimo, ele voltava para o mesmo número, atualizando apenas a quantidade de itens da array. Obrigado pela ajuda.Pokedlg escreveu:Olha, tente fazer assim, coloque a sua array de inimigo (enemies) como 0, depois, coloque este script, estrei explicando o que cada coisa faz:
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class GameController : MonoBehaviour
{
public GameController instance;
public GameObject[] enemies;
public int inim;
private void Awake()
{
instance = this;
}
private void Start()
{
enemies = GameObject.FindGameObjectsWithTag("Enemy"); //sua array irá detectar todos objetos na cena e colocar nesta array
GameObject _ = Instantiate(enemies[0]) as GameObject; // irá instanciar o objeto que está no index 0
}
private void Update()
{
if (Enemy.instance.currentHealth <= 0)
{
inim++; //inim irá ficar aumentando para cada currentHealth chegado a 0
GameObject _ = Instantiate(enemies[inim]) as GameObject; irá instanciar conforme ele aumenta, se matou um inimigo, instancia o próximo
}
if(inim >= enemies.Length) //se inim passar do tamanho da array
{
inim = 0; //inim se tornará 0 novamente
GameObject _ = Instantiate(enemies[inim]); //instanciando o index 0, e recomeçando tudo de novo
}
}
}
Foi criado um loop, que após voce matar um inimigo irá instanciar o próximo, e assim infinatamente.
darkrj- Avançado
- PONTOS : 2327
REPUTAÇÃO : 15
Respeito as regras :
Pokedlg- ProgramadorMaster
- PONTOS : 2340
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras :
Tópicos semelhantes
» Buscar o índice de um array que está dentro de outro array (JavaScript)
» Player spawnar imediatamente após morrer
» inimigo não anda após animação
» Player encostar no inimigo e morrer
» Problema pra fazer o inimigo morrer
» Player spawnar imediatamente após morrer
» inimigo não anda após animação
» Player encostar no inimigo e morrer
» Problema pra fazer o inimigo morrer
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos