Como destruir objecto clone?
2 participantes
Página 1 de 1
Como destruir objecto clone?
Olá. Estou a criar um infinity runner em 3d. Cheguei a altura de fazer os obstáculos. Consegui fazer bem o script mas depois os clones dos obstáculos ficam na cena. Resolvi fazer uma pequena coisa que quando carregar no botão de jogar novamente define o valor 1 e no obstáculo se esse valor for 1 eles destrói. Funciona só com uns 5 ou 6 obstáculos. A partir daí da um erro na consola. Ajuda, como eu vou eliminar os clones?
ItzPires- Membro
- PONTOS : 3358
REPUTAÇÃO : 2
Respeito as regras :
Re: Como destruir objecto clone?
Olá amigo, não sei como você fez, e gostaria que você colocasse o script e o erro que tá dando aqui.
Mas como se trata de um infinity runner, existe um obstáculo principal que se multiplica em clones para formar a cena. Então eu criaria um script e colocaria-o neste obstáculo principal, assim, quando ele for multiplicado em clones, todos vão ter o mesmo script.
E nesse script, terá a função:
Mas como se trata de um infinity runner, existe um obstáculo principal que se multiplica em clones para formar a cena. Então eu criaria um script e colocaria-o neste obstáculo principal, assim, quando ele for multiplicado em clones, todos vão ter o mesmo script.
E nesse script, terá a função:
- Código:
if(valor == 1)
{
Destroy(GameObject);
}
George Lucas Vieira- Avançado
- PONTOS : 3391
REPUTAÇÃO : 132
Idade : 21
Áreas de atuação : Programação, Modelagem e Animação.
Respeito as regras :
Re: Como destruir objecto clone?
Eu fiz isso amigo. Mas isso só funciona com 5 ou 6 objectos. Se passar disso da erro
ItzPires- Membro
- PONTOS : 3358
REPUTAÇÃO : 2
Respeito as regras :
Re: Como destruir objecto clone?
Poderia postar seu script do obstáculo? Qual o erro que aparece no console? Coloque também por favor o script de spawn de obstáculos, pode ser que tenhamos que fazer alguma modificação.ItzPires escreveu:Eu fiz isso amigo. Mas isso só funciona com 5 ou 6 objectos. Se passar disso da erro
George Lucas Vieira- Avançado
- PONTOS : 3391
REPUTAÇÃO : 132
Idade : 21
Áreas de atuação : Programação, Modelagem e Animação.
Respeito as regras :
Re: Como destruir objecto clone?
Este é o erro: the object of type gameobject has been destroyed but you are still trying to access it
Eu posso passar o script mas só amanhã, é que eu sou português e já é tarde e estou no tablet
Eu posso passar o script mas só amanhã, é que eu sou português e já é tarde e estou no tablet
ItzPires- Membro
- PONTOS : 3358
REPUTAÇÃO : 2
Respeito as regras :
Re: Como destruir objecto clone?
Já sei qual é o erro irmão XDItzPires escreveu:Este é o erro: the object of type gameobject has been destroyed but you are still trying to access it
Eu posso passar o script mas só amanhã, é que eu sou português e já é tarde e estou no tablet
O erro acontece por causa do script de spawn de objetos.
Vamos raciocinar:
Teu script spawna clones a partir de um obstáculo principal. O script de destruir obstáculos além de destruir os clones, uma hora também destrói o objeto principal, e o script de spawn perde a referência de qual obstáculo spawnar. E por isso aparece o erro "the object of type gameobject has been destroyed but you are still trying to access it", que pode ser entendido como "você está tentando instanciar um gameObject que não existe".
Neste caso, vamos ter que utilizar GameObjects auxiliares para instanciar obstáculos em cena. Aguardarei seu script para que possamos modificá-lo. Me responda uma pergunta, em qual objeto está linkado o script de Spawn de Obstáculos?
George Lucas Vieira- Avançado
- PONTOS : 3391
REPUTAÇÃO : 132
Idade : 21
Áreas de atuação : Programação, Modelagem e Animação.
Respeito as regras :
Re: Como destruir objecto clone?
Mas eu fiz isso. Criei um public gameobject no script para lá colocar o prefab do obstáculo. O script do Spawn esta num gameobject a parte. Amanhã passo os scripts
ItzPires- Membro
- PONTOS : 3358
REPUTAÇÃO : 2
Respeito as regras :
Re: Como destruir objecto clone?
Sei disso, por isso falei que irás precisar de um GameObject auxiliar.
Imagine uma árvore. Se você destrói o tronco inteiro dessa árvore, ela morrerá. Mas se você destrói apenas os galhos, as folhas são as únicas que morrerão. Mas depois poderão nascer de novo, pois os galhos crescerem novamente.
É exatamente isso que faremos na programação.
O tronco será o Obstáculo Principal; os galhos serão os GameObjects auxiliares; e as folhas serão os clones.
Nós precisamos manter o tronco intacto o tempo inteiro, e trabalharemos apenas com os galhos e folhas. Ao destruir os galhos, ou seja, os auxiliares, os clones se destruirão, mas nós podemos instanciá-los novamente pois temos o "tronco" intacto.
Imagine uma árvore. Se você destrói o tronco inteiro dessa árvore, ela morrerá. Mas se você destrói apenas os galhos, as folhas são as únicas que morrerão. Mas depois poderão nascer de novo, pois os galhos crescerem novamente.
É exatamente isso que faremos na programação.
O tronco será o Obstáculo Principal; os galhos serão os GameObjects auxiliares; e as folhas serão os clones.
Nós precisamos manter o tronco intacto o tempo inteiro, e trabalharemos apenas com os galhos e folhas. Ao destruir os galhos, ou seja, os auxiliares, os clones se destruirão, mas nós podemos instanciá-los novamente pois temos o "tronco" intacto.
George Lucas Vieira- Avançado
- PONTOS : 3391
REPUTAÇÃO : 132
Idade : 21
Áreas de atuação : Programação, Modelagem e Animação.
Respeito as regras :
Re: Como destruir objecto clone?
Eu entendi e acho que fiz mais ou menos isso mas se calhar agora que penso bem talvez não kkk. Amanhã de manhã coloco os scripts. Boa noite
ItzPires- Membro
- PONTOS : 3358
REPUTAÇÃO : 2
Respeito as regras :
Re: Como destruir objecto clone?
Ola. Aqui estao os scripts.
Este é o que eu uso para o spawn dos obstaculos. Ele esta num gameobject que eu uso para colocar todos os scripts.
Este é o que eu uso para o spawn dos obstaculos. Ele esta num gameobject que eu uso para colocar todos os scripts.
- Código:
using UnityEngine;
using System.Collections;
public class Spawn : MonoBehaviour {
public GameObject Cena1;
public GameObject Cena2;
public GameObject Cena3;
public float rateSpawn;
public float currentTime;
public float PosX;
public float PosY;
public float PosZ;
private int aleat;
private GameObject barreira;
void Start () {
currentTime = 0;
}
void Update () {
currentTime += Time.deltaTime;
if(currentTime >= rateSpawn)
{
currentTime = 0;
aleat = Random.Range(1,3);
if(aleat == 1)
{
barreira = Cena1;
}
if(aleat == 2)
{
barreira = Cena2;
}
if(aleat == 3)
{
barreira = Cena3;
}
GameObject tempPrefab = Instantiate(barreira) as GameObject;
tempPrefab.transform.position = new Vector3(PosX,PosY,PosZ);
}
}
}
ItzPires- Membro
- PONTOS : 3358
REPUTAÇÃO : 2
Respeito as regras :
Re: Como destruir objecto clone?
Amigo, que estranho, percebo que você já está usando a variável "barreira" como auxiliar. Poste por favor o script em que contém a função "Destroy()", provavelmente será o script do obstáculo.
George Lucas Vieira- Avançado
- PONTOS : 3391
REPUTAÇÃO : 132
Idade : 21
Áreas de atuação : Programação, Modelagem e Animação.
Respeito as regras :
Re: Como destruir objecto clone?
Mas eu ainda nem fiz o script de obstáculo. E o script da função Destroy() é igual ao que você colocou ai em cima. Mas amanhã eu posto se quiser. Obrigado na mesma
ItzPires- Membro
- PONTOS : 3358
REPUTAÇÃO : 2
Respeito as regras :
Tópicos semelhantes
» Problema ao destruir Clone de um Prefab
» Problemas para destruir clone de prefab
» [DUVIDA] Como destruir um GameObject (cubo etc...) sem destruir seus "afilhados"
» Como Destruir cubos em pedaços
» Olá, Como destruir um objeto que não foi o mesmo que eu encostei ? LOL "0"
» Problemas para destruir clone de prefab
» [DUVIDA] Como destruir um GameObject (cubo etc...) sem destruir seus "afilhados"
» Como Destruir cubos em pedaços
» Olá, Como destruir um objeto que não foi o mesmo que eu encostei ? LOL "0"
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos