Spawn bugado unity2D
2 participantes
Página 1 de 1
Spawn bugado unity2D
Eu quero fazer com que meus inimigos deem spawn em 4 pontos da minha tela aleatoriamente, ate ai ok, funcionou, porem eu tenho somente um inimigo pra spawnar, e quando ele é spawnado mais de uma vez, eles parecem dividir os comandos, tipo 1 bate na parede, e todos os outros agem como se estivessem batido na parede tbm, ai ficam todos travados, fiz 4gameobjects pros pontos de spawns, e o inimigo usei um prefab.
Segue meu codigo.
Segue meu codigo.
- Código:
public class Spawn : MonoBehaviour
{
public GameObject spawn1, spawn2, spawn3, spawn4;
public GameObject enimie;
public float spawnRate = 2f;
float nextSpawn = 0f;
int whatToSpawn;
void Start()
{
}
void Update()
{ if (Time.time > nextSpawn) {
whatToSpawn = Random.Range(1, 5);
switch (whatToSpawn) {
case 1:
Instantiate(enimie, spawn1.transform.position, Quaternion.identity);
break;
case 2:
Instantiate(enimie, spawn2.transform.position, Quaternion.identity);
break;
case 3:
Instantiate(enimie, spawn3.transform.position, Quaternion.identity);
break;
case 4:
Instantiate(enimie, spawn4.transform.position, Quaternion.identity);
break;
}
nextSpawn = Time.time + spawnRate;
}
}
}
IssacDB- Iniciante
- PONTOS : 1728
REPUTAÇÃO : 0
Respeito as regras :
Re: Spawn bugado unity2D
Consegui achar o erro, vou deixar meu vacilo aqui pra quem sabe ajudar futuros iniciantes tbm.
O codigo tava se sabotando pq eu deixei a minha variavel de direçao do inimigo "move", como static, pra poder acessar ela no scrpt do attack, fiz isso pra conseguir dar flip no box collider de attack, mas parece que isso tava transmitindo a mesma variavel move pra todos os inimigos spawnados, entao eu tirei o static de move, e coloquei o sprite render como static, funcionou. Vou deixar o codigo aqui so pra registro mesmo.
O codigo tava se sabotando pq eu deixei a minha variavel de direçao do inimigo "move", como static, pra poder acessar ela no scrpt do attack, fiz isso pra conseguir dar flip no box collider de attack, mas parece que isso tava transmitindo a mesma variavel move pra todos os inimigos spawnados, entao eu tirei o static de move, e coloquei o sprite render como static, funcionou. Vou deixar o codigo aqui so pra registro mesmo.
- Código:
if (!atacar)
{
if (rb.velocity.x == 0)
{
move = move * -1;
}
else
{
if (move == 1)
{
sprite.flipX = false;
}
if (move == -1)
{
sprite.flipX = true;
}
}
anim.SetBool("Atacar", false);
}
else {
move = 0;
anim.SetBool("Atacar", true);
}
}
IssacDB- Iniciante
- PONTOS : 1728
REPUTAÇÃO : 0
Respeito as regras :
Re: Spawn bugado unity2D
Detalhe, deixando o sprite como static ele nao da mais Flip no sprite..... FacePalm..IssacDB escreveu:Consegui achar o erro, vou deixar meu vacilo aqui pra quem sabe ajudar futuros iniciantes tbm.
O codigo tava se sabotando pq eu deixei a minha variavel de direçao do inimigo "move", como static, pra poder acessar ela no scrpt do attack, fiz isso pra conseguir dar flip no box collider de attack, mas parece que isso tava transmitindo a mesma variavel move pra todos os inimigos spawnados, entao eu tirei o static de move, e coloquei o sprite render como static, funcionou. Vou deixar o codigo aqui so pra registro mesmo.
- Código:
if (!atacar)
{
if (rb.velocity.x == 0)
{
move = move * -1;
}
else
{
if (move == 1)
{
sprite.flipX = false;
}
if (move == -1)
{
sprite.flipX = true;
}
}
anim.SetBool("Atacar", false);
}
else {
move = 0;
anim.SetBool("Atacar", true);
}
}
IssacDB- Iniciante
- PONTOS : 1728
REPUTAÇÃO : 0
Respeito as regras :
Re: Spawn bugado unity2D
a palavra "static" é pra existir somente uma variavel na memoria e só pode ser acessada do script original ,então quando vc muda ela vc está mudando a variavel no arquivo original,enquanto as outras vc deve fazer referencia ao script já instanciado que é uma copia da original,ou criar uma nova copia por scriptIssacDB escreveu:Consegui achar o erro, vou deixar meu vacilo aqui pra quem sabe ajudar futuros iniciantes tbm.
O codigo tava se sabotando pq eu deixei a minha variavel de direçao do inimigo "move", como static, pra poder acessar ela no scrpt do attack, fiz isso pra conseguir dar flip no box collider de attack, mas parece que isso tava transmitindo a mesma variavel move pra todos os inimigos spawnados, entao eu tirei o static de move, e coloquei o sprite render como static, funcionou. Vou deixar o codigo aqui so pra registro mesmo.
- Código:
if (!atacar)
{
if (rb.velocity.x == 0)
{
move = move * -1;
}
else
{
if (move == 1)
{
sprite.flipX = false;
}
if (move == -1)
{
sprite.flipX = true;
}
}
anim.SetBool("Atacar", false);
}
else {
move = 0;
anim.SetBool("Atacar", true);
}
}
diegopds- Mestre
- PONTOS : 3419
REPUTAÇÃO : 52
Idade : 26
Respeito as regras :
Tópicos semelhantes
» Livro de Unity2D
» Unity2D não detectando colisões
» Unity2d Pegar Tag Do Inimigo
» Unity2D- Fazer 2 inimigos nascerem depois entrar em um collider?
» Como limitar ate onde a câmera do unity2D pode ir?
» Unity2D não detectando colisões
» Unity2d Pegar Tag Do Inimigo
» Unity2D- Fazer 2 inimigos nascerem depois entrar em um collider?
» Como limitar ate onde a câmera do unity2D pode ir?
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos