Problema com SetActive e collider
4 participantes
Página 1 de 1
Problema com SetActive e collider
To fazendo uns testes para um jogo que é 2d, o player ja tem todas os sprites com as armas no local certo so que começam com o setActive no false. Ai quando ele encontra uma arma, por exemplo arma 1, ai destroi essa arma no chao e o setActive do sprite com a arma 1 que esta no local certo fica true.Bom, era isso que devia acontecer, so que nao acontece nada, o player entra no collider da arma no chao e continua a mesma coisa, nao muda sprite e nem a arma destroi.
script da arma que fica no chao:
e aqui o script que fica no sprite com a arma:
Coloquei box collider na arma no chao e marquei is trigger.Coloquei um collider num objeto vazio também, ai coloquei o sprite do player parado e a partir dai fiz a animação. E também linkei o sprite para ser ativado no local correto.
script da arma que fica no chao:
- Código:
using UnityEngine;
using System.Collections;
public class armanochao : MonoBehaviour {
public GameObject ArmaParaAtivar;
void OnTriggerEnter2d(){
ArmaParaAtivar.SetActive (true);
Destroy (gameObject);
}
}
e aqui o script que fica no sprite com a arma:
- Código:
void Start () {
gameObject.SetActive (false);
}
Coloquei box collider na arma no chao e marquei is trigger.Coloquei um collider num objeto vazio também, ai coloquei o sprite do player parado e a partir dai fiz a animação. E também linkei o sprite para ser ativado no local correto.
Joaogabrielf13- Avançado
- PONTOS : 3596
REPUTAÇÃO : 7
Respeito as regras :
Re: Problema com SetActive e collider
Voce precisa setar alguma identificação dos colliders que voce quer usar através do script.
Um exemplo é adicionar uma tag. Vamos fingir que voce pôs a tag no player de "player".
Ao chamar a void OnTriggerEnter2D voce manda um nome temporario para o objeto que vai ser salvo (ler abaixo).
Assim a void OnTriggerEnter vai salvar o objeto que entrou no collider da arma com a identificacao de "col" como eu coloquei ali "Collider2D col". Esse scriptzinho deve ser posto na arma no chao. Entao voce apenas compara se esse gameobject salvo tem a tag player "(col.gameObject.tag=="player")" e executa se for verdadeiro. Assim somente se algo com a tag player entrar no collider da arma ira ativar o que voce quer.
Um exemplo é adicionar uma tag. Vamos fingir que voce pôs a tag no player de "player".
- Código:
using UnityEngine;
using System.Collections;
public class armanochao : MonoBehaviour {
public GameObject ArmaParaAtivar;
void OnTriggerEnter2D(Collider2D col){ // leia a explicaçao abaixo
if (col.gameObject.tag == "player"){ // leia a explicação abaixo
ArmaParaAtivar.SetActive(true);
Destroy (gameObject);
}
}
}
Ao chamar a void OnTriggerEnter2D voce manda um nome temporario para o objeto que vai ser salvo (ler abaixo).
Assim a void OnTriggerEnter vai salvar o objeto que entrou no collider da arma com a identificacao de "col" como eu coloquei ali "Collider2D col". Esse scriptzinho deve ser posto na arma no chao. Entao voce apenas compara se esse gameobject salvo tem a tag player "(col.gameObject.tag=="player")" e executa se for verdadeiro. Assim somente se algo com a tag player entrar no collider da arma ira ativar o que voce quer.
RenanMSV- Instrutor
- PONTOS : 4484
REPUTAÇÃO : 356
Áreas de atuação : Programação em C#, PHP. SQL, JavaScript (Web)
Respeito as regras :
Re: Problema com SetActive e collider
Continua a mesma coisa, o player entra no collider da arma e nada acontece.
Joaogabrielf13- Avançado
- PONTOS : 3596
REPUTAÇÃO : 7
Respeito as regras :
Re: Problema com SetActive e collider
De cara pude perceber que você está escrevendo o código errado João...
o seu 2d deveria ser 2D, dom D maiúsculo, dentre outras coisas...
preciso dos scripts completos para checar tudo
o seu 2d deveria ser 2D, dom D maiúsculo, dentre outras coisas...
preciso dos scripts completos para checar tudo
Re: Problema com SetActive e collider
Sim mas, depois corrigi com o script que o RenanMSV me passou,então ta certo.
Alem desse so tem mais dois scripts: O do sprite que começa com o SetActive no false, esse é so uma linha na void Start, e o script de movimento do player que é bem simples e nao tem ligação.
- Código:
using UnityEngine;
using System.Collections;
public class armanochao : MonoBehaviour {
public GameObject ArmaParaAtivar;
public GameObject ArmaParaDesativar;
void OnTriggerEnter2D(Collider2D col){
if (col.gameObject.tag == "Player") {
ArmaParaAtivar.SetActive (true);
ArmaParaDesativar.SetActive (false);
Destroy (gameObject);
}
}
}
Alem desse so tem mais dois scripts: O do sprite que começa com o SetActive no false, esse é so uma linha na void Start, e o script de movimento do player que é bem simples e nao tem ligação.
Joaogabrielf13- Avançado
- PONTOS : 3596
REPUTAÇÃO : 7
Respeito as regras :
Re: Problema com SetActive e collider
Fiquei um tempo procurando um erro e não achei nenhum. Upei o projeto, alguém por favor baixe e tente achar algum erro que eu deixei passar.
http://www.4shared.com/rar/SYaFx5J7ba/TESTE.html
http://www.4shared.com/rar/SYaFx5J7ba/TESTE.html
Joaogabrielf13- Avançado
- PONTOS : 3596
REPUTAÇÃO : 7
Respeito as regras :
Re: Problema com SetActive e collider
Tente fazer isso usando o script com o player ao contrario.
Ou tente tirar esse Destroy (gameObject) para testes.
Ou tente tirar esse Destroy (gameObject) para testes.
hellkiller- Mestre
- PONTOS : 4054
REPUTAÇÃO : 170
Áreas de atuação : Programação em C#,
Modelagem,
GameArt.
Respeito as regras :
Re: Problema com SetActive e collider
Como assim com o player ao contrario?
Joaogabrielf13- Avançado
- PONTOS : 3596
REPUTAÇÃO : 7
Respeito as regras :
Re: Problema com SetActive e collider
O script em vez de ser na arma,ser no player!
hellkiller- Mestre
- PONTOS : 4054
REPUTAÇÃO : 170
Áreas de atuação : Programação em C#,
Modelagem,
GameArt.
Respeito as regras :
Re: Problema com SetActive e collider
Colocar o script da arma no chão no player e colocar a tag Player na arma no chão? Fiz isso mas não mudou nada.
Joaogabrielf13- Avançado
- PONTOS : 3596
REPUTAÇÃO : 7
Respeito as regras :
Re: Problema com SetActive e collider
Tenta fazer assim
- Código:
using UnityEngine;
using System.Collections;
public class InimigoController : MonoBehaviour {
public GameObject ArmaParaAtivar;
public GameObject ArmaParaDesativar;
private bool PertoDaArma = false;
void Update()
{
if(PertoDaArma == true)
{
ArmaParaAtivar.SetActive(true);
ArmaParaDesativar.SetActive(false);
}
}
void OnTriggerEnter2D(Collider2D col)
{
if (col.gameObject.tag == "Player")
{
PertoDaArma = true;
Destroy(gameObject);
}
}
}
hellkiller- Mestre
- PONTOS : 4054
REPUTAÇÃO : 170
Áreas de atuação : Programação em C#,
Modelagem,
GameArt.
Respeito as regras :
Re: Problema com SetActive e collider
Não funcionou :pale: Vou baixar uma versão anterior da unity e testar.
Joaogabrielf13- Avançado
- PONTOS : 3596
REPUTAÇÃO : 7
Respeito as regras :
Re: Problema com SetActive e collider
Cara, não tem a ver com a versão da Unity nem nada disso.
Poste prints de como estão os seus objetos e o colisor deles, poste os scripts que está utilizando e diga onde eles estão. Provavelmente só não está configurando a parte das colisões certo, por precisa de rigidbody
Poste prints de como estão os seus objetos e o colisor deles, poste os scripts que está utilizando e diga onde eles estão. Provavelmente só não está configurando a parte das colisões certo, por precisa de rigidbody
Tópicos semelhantes
» Problema com SetActive
» Problema com Collider
» Ajuda com problema no collider
» Problema com Wheel Collider
» [RESOLVIDO] Problema no mesh collider após exportar para Desktop
» Problema com Collider
» Ajuda com problema no collider
» Problema com Wheel Collider
» [RESOLVIDO] Problema no mesh collider após exportar para Desktop
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos