Instancia de objeto
3 participantes
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
Instancia de objeto
Sou iniciante em Unity, nao sei quase nada ainda, então estou seguindo apenas tutoriais da net para fazer o meu jogo.
Eu criei um jogo de nave onde temos um objeto com a tag 'tiro' e um script no inimigo que faz o seguinte:
Eu criei uma animação de explosao e joguei ela num objeto que virou prefab. Esse prefab é devidamente setado no inspector do inimigo que contém o script acima.
O problema é que depois de eu destruo o inimigo da primeira vez, a explosao é instanciada, mas da segunda vez em diante não é mais e aparece o erro "The variable explosao of InimigoNave has not been assigned"
No objeto da explosao, além do recurso da animação, ainda tem um script que destroi a animação depois de um tempo, usando destroy(gameobject)
enfim, oq pode ser? Como eu resolvo isso?
Eu criei um jogo de nave onde temos um objeto com a tag 'tiro' e um script no inimigo que faz o seguinte:
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MovendoNave : MonoBehaviour {
public GameObject explosao;
void OnTriggerEnter2D(Collider2D colisor)
{
if (colisor.tag == "tiro")
{
Instantiate (explosao, transform.position, transform.rotation);
}
}
}
Eu criei uma animação de explosao e joguei ela num objeto que virou prefab. Esse prefab é devidamente setado no inspector do inimigo que contém o script acima.
O problema é que depois de eu destruo o inimigo da primeira vez, a explosao é instanciada, mas da segunda vez em diante não é mais e aparece o erro "The variable explosao of InimigoNave has not been assigned"
No objeto da explosao, além do recurso da animação, ainda tem um script que destroi a animação depois de um tempo, usando destroy(gameobject)
enfim, oq pode ser? Como eu resolvo isso?
helloWorld1- Iniciante
- PONTOS : 2634
REPUTAÇÃO : 0
Respeito as regras :
Re: Instancia de objeto
já tentou assim;
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MovendoNave : MonoBehaviour {
public GameObject explosao;
void OnTriggerEnter2D(Collider2D colisor)
{
if (colisor.transform.tag == "tiro") //se aqui nao der certo vc deixa if(colisor.tag == "tiro");
{
for(int i = 0,i < 1,i ++){
Instantiate (explosao, transform.position, transform.rotation);
}
}
}
}
Phph09- Profissional
- PONTOS : 3788
REPUTAÇÃO : 240
Idade : 19
Respeito as regras :
Re: Instancia de objeto
Eu fiz exatamente como vc disse e ainda dá o mesmo erro
Eu so queria reproduzir uma animação de explosao no objeto da nave, assim q o tiro colidisse com a nave, creio que seja algo simples, mas nao consigo.
Existe algum jeito melhor de reproduzir animação que nao seja instanciando um objeto que contem a animação dentro da condição de colisao?
Eu so queria reproduzir uma animação de explosao no objeto da nave, assim q o tiro colidisse com a nave, creio que seja algo simples, mas nao consigo.
Existe algum jeito melhor de reproduzir animação que nao seja instanciando um objeto que contem a animação dentro da condição de colisao?
helloWorld1- Iniciante
- PONTOS : 2634
REPUTAÇÃO : 0
Respeito as regras :
Re: Instancia de objeto
Por exemplo:
if (colisor.transform.tag == "tiro"){
// reproduzir animação de explosão que criei no animator e depois de um tempo ela some
}
if (colisor.transform.tag == "tiro"){
// reproduzir animação de explosão que criei no animator e depois de um tempo ela some
}
helloWorld1- Iniciante
- PONTOS : 2634
REPUTAÇÃO : 0
Respeito as regras :
Re: Instancia de objeto
ok entendí agora ; achava que era para instanciar o objeto;para reproduzir a animação você ode fazer isso de varias maneiras;você pode criar uma condição no animator(o que eu geralmente faço);você pode deixar uma animação errada como default(padrão) no animator ena hora que vc quiser ativar o animator e depois desativar;vou fazer esse exemplo,para seguir ele vc adiciona o animator,vai em parâmetros e adiciona um parâmetro do tipo boll com o nome "Explosão" ae você cria uma animação vazia (Empty) e cria uma linha de transição apartir dela para a animação de explosão;
vc cria uma de ida e uma de volta ; nas duas você desmarca a opção Exit Time(Algo Assim) e vai nas condições e na faixa de trasição de ida vc coloca : Explosão. : True e na faixa de volta vc coloca Explosão. : False
vc cria uma de ida e uma de volta ; nas duas você desmarca a opção Exit Time(Algo Assim) e vai nas condições e na faixa de trasição de ida vc coloca : Explosão. : True e na faixa de volta vc coloca Explosão. : False
- Código:
//Script:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MovendoNave : MonoBehaviour {
public GameObject explosao;
private Animator anim;
public float TempoDaExplosao;
void Start(){
anim = GetComponent<Animator>();
void OnTriggerEnter2D(Collider2D colisor)
{
if (colisor.tag == "tiro")
{
StartCoroutine("IniciaExplosao");
}
}
IEnumerator IniciarExplosao(){
anim.SetBoll("Explosao",true);
yield return new WaitForSeconds(TempoDaExplosao);
anim.SetBoll("Explosao",false);
}
}
Phph09- Profissional
- PONTOS : 3788
REPUTAÇÃO : 240
Idade : 19
Respeito as regras :
Re: Instancia de objeto
Ok, eu fiz tudo oq vc falou, criei a animação da explosao e depois uma vazia, no animator controller coloquei as setinhas igual vc disse.
Criei o parametro bool, configurei ele nas setinhas, colei o script q vc passou, setei o prefab da animação no objeto e mesmo assim nao vai.
Eu atiro no inimigo mas nao reproduz animação, como tbm nao reproduz erros.
Eu estou desde hj de manha tentando fazer essa animação aparecer, por favor me ajude, eh um trabalho q tenho q entregar na quinta.
Criei o parametro bool, configurei ele nas setinhas, colei o script q vc passou, setei o prefab da animação no objeto e mesmo assim nao vai.
Eu atiro no inimigo mas nao reproduz animação, como tbm nao reproduz erros.
Eu estou desde hj de manha tentando fazer essa animação aparecer, por favor me ajude, eh um trabalho q tenho q entregar na quinta.
helloWorld1- Iniciante
- PONTOS : 2634
REPUTAÇÃO : 0
Respeito as regras :
Re: Instancia de objeto
voçê tem que deixar um objeto com esse script já na cena essa variável explosão nao serve mais de nada, eu que esqueci de eliminar ela do script;
deixa um objeto com esse script e o animator ( mas precisamente o prefab de sua animação) na cena e adicione esse script a esse objeto
deixa um objeto com esse script e o animator ( mas precisamente o prefab de sua animação) na cena e adicione esse script a esse objeto
Phph09- Profissional
- PONTOS : 3788
REPUTAÇÃO : 240
Idade : 19
Respeito as regras :
Re: Instancia de objeto
Eu deixei o script no objeto da nave inimiga, q leva a colisao, eh pra deixar esse script no prefab da explosao?
helloWorld1- Iniciante
- PONTOS : 2634
REPUTAÇÃO : 0
Respeito as regras :
Re: Instancia de objeto
A nave q recebe a colisao e tem esse script eh destruida de cena e depois volta num respawn,so q essa nave tbm é um prefab.
helloWorld1- Iniciante
- PONTOS : 2634
REPUTAÇÃO : 0
Respeito as regras :
Re: Instancia de objeto
sim, mas deixe uma copia do prefab ativo no inspector e deixe ele filiado à nave;;;
Phph09- Profissional
- PONTOS : 3788
REPUTAÇÃO : 240
Idade : 19
Respeito as regras :
Re: Instancia de objeto
Simples, jogue a explosão no seu objeto e jogue seu objeto novamente sobre o prefab, para que ele seja atualizado com a explosão, o que acontece é que seu inimigo que tem a explosão morre, mas o do prefab não tem, então quando ele tenta explodir, não acha a explosão e dá erro.helloWorld1 escreveu:Sou iniciante em Unity, nao sei quase nada ainda, então estou seguindo apenas tutoriais da net para fazer o meu jogo.
Eu criei um jogo de nave onde temos um objeto com a tag 'tiro' e um script no inimigo que faz o seguinte:
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MovendoNave : MonoBehaviour {
public GameObject explosao;
void OnTriggerEnter2D(Collider2D colisor)
{
if (colisor.tag == "tiro")
{
Instantiate (explosao, transform.position, transform.rotation);
}
}
}
Eu criei uma animação de explosao e joguei ela num objeto que virou prefab. Esse prefab é devidamente setado no inspector do inimigo que contém o script acima.
O problema é que depois de eu destruo o inimigo da primeira vez, a explosao é instanciada, mas da segunda vez em diante não é mais e aparece o erro "The variable explosao of InimigoNave has not been assigned"
No objeto da explosao, além do recurso da animação, ainda tem um script que destroi a animação depois de um tempo, usando destroy(gameobject)
enfim, oq pode ser? Como eu resolvo isso?
Atualize o prefab e tudo deve se resolver.
Fagner- Moderador
- PONTOS : 4442
REPUTAÇÃO : 667
Áreas de atuação : Modelagem 3D, Programação.
Respeito as regras :
Re: Instancia de objeto
Qnd vc diz 'explosao' vc diz o prefab da explosao?
Entao eu faria assim:O prefab da explosao no objeto da nave, (isso ja esta feito) e o prefab da nave no prefab da explosao. eh isso?
Entao eu faria assim:O prefab da explosao no objeto da nave, (isso ja esta feito) e o prefab da nave no prefab da explosao. eh isso?
helloWorld1- Iniciante
- PONTOS : 2634
REPUTAÇÃO : 0
Respeito as regras :
Re: Instancia de objeto
Não, pegue essa nave que já está com a instancia da explosão, e jogue sobre o prefab da NaveInimiga, é só arrastar e soltar em cima(Dentro da pasta de prefabs)helloWorld1 escreveu:Qnd vc diz 'explosao' vc diz o prefab da explosao?
Entao eu faria assim:O prefab da explosao no objeto da nave, (isso ja esta feito) e o prefab da nave no prefab da explosao. eh isso?
Ou simplesmente vá no prefab na Nave inimiga(na pasta), e jogue o prefab da explosão nele.
Última edição por Fagner em Ter Set 26, 2017 9:26 pm, editado 1 vez(es)
Fagner- Moderador
- PONTOS : 4442
REPUTAÇÃO : 667
Áreas de atuação : Modelagem 3D, Programação.
Respeito as regras :
Re: Instancia de objeto
Deu ceto amigo, mto obrigado <333
Fiquei a tarde toda tentando arrumar isso e era uma coisa mto obvia HUSHAUHSAUH
obrigado mesmo s2
Fiquei a tarde toda tentando arrumar isso e era uma coisa mto obvia HUSHAUHSAUH
obrigado mesmo s2
helloWorld1- Iniciante
- PONTOS : 2634
REPUTAÇÃO : 0
Respeito as regras :
Re: Instancia de objeto
DisponhahelloWorld1 escreveu:Deu ceto amigo, mto obrigado <333
Fiquei a tarde toda tentando arrumar isso e era uma coisa mto obvia HUSHAUHSAUH
obrigado mesmo s2
Fagner- Moderador
- PONTOS : 4442
REPUTAÇÃO : 667
Áreas de atuação : Modelagem 3D, Programação.
Respeito as regras :
Tópicos semelhantes
» Quero setar uma variavel de um objeto para outros objetos , mas o objeto esta dentro de uma array desse objeto
» Como fazer o objeto emitido pela partícula ser direcionado até outro objeto
» Como fazer para interagir um objeto com um outro objeto [Estilo Granny]
» [RESOLVIDO] Como fazer um objeto 2D rotacionar em direção a outro objeto
» Como fazer para um objeto não colidir com um "collider" e o outro objeto si
» Como fazer o objeto emitido pela partícula ser direcionado até outro objeto
» Como fazer para interagir um objeto com um outro objeto [Estilo Granny]
» [RESOLVIDO] Como fazer um objeto 2D rotacionar em direção a outro objeto
» Como fazer para um objeto não colidir com um "collider" e o outro objeto si
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos