Duvida sobre OnTriggerEnter
3 participantes
Página 1 de 1
Duvida sobre OnTriggerEnter
Estou assistindo as video-aulas do schultz sobre C# no unity (Já assisti os 3 primeiros),estou treinando oque vi no vídeo dele fazendo um mini-jogo muito simples onde voce controla um cubo iluminado com as setas do teclado com o objetivo de tocar em plataformas coloridas para colocar o nome da cor desta plataforma na variavel publica string do script do jogador,quando tocasse nas 4 plataformas coloridas de uma area iria ganhar 10 pontos,apos isso trocaria de area para uma nova area com plataformas coloridas e apos passar o jogo fecha! (Simbolizando que venceu).
Mas emfim,o meu problema é que não entendi direito como utiliza-se a void ontriggerenter!,vou postar o script do controle do jogador onde estou fazendo tudo para explicar melhor:
Meu problema e esta ultima void de baixo.
Quando o jogador (que é um cubo branco) entrar em um caixote (é um cubo amarelo grande) é para o string que esta "plataforma" (plataforma é o terreno que o jogador esta pisando) se tornar "caixote",entendeu?
não sei se esta escrita corretamente (Não da erro algum na unity,aqueles aviso sabe)mas não funciona como eu queria.
Mas emfim,o meu problema é que não entendi direito como utiliza-se a void ontriggerenter!,vou postar o script do controle do jogador onde estou fazendo tudo para explicar melhor:
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ControleDoJogador : MonoBehaviour
{
public float Velocidade;
public string TocandoEm;
void Start()
{
TocandoEm = "Plataforma";
Velocidade = 0.5f;
}
void Update()
{
if (Input.GetKey(KeyCode.UpArrow))
{
transform.Translate (0, 0, Velocidade);
}
if (Input.GetKey(KeyCode.DownArrow))
{
transform.Translate(0, 0, -Velocidade);
}
if (Input.GetKey(KeyCode.LeftArrow))
{
transform.Translate(-Velocidade, 0, 0);
}
if (Input.GetKey(KeyCode.RightArrow))
{
transform.Translate(Velocidade, 0, 0);
}
}
void OnTriggerEnter(Collider other)
{
if (transform.gameObject.tag == "caixote")
{
TocandoEm = "Caixote";
}
}
}
Meu problema e esta ultima void de baixo.
Quando o jogador (que é um cubo branco) entrar em um caixote (é um cubo amarelo grande) é para o string que esta "plataforma" (plataforma é o terreno que o jogador esta pisando) se tornar "caixote",entendeu?
não sei se esta escrita corretamente (Não da erro algum na unity,aqueles aviso sabe)mas não funciona como eu queria.
Érick D.S.S- Iniciante
- PONTOS : 1729
REPUTAÇÃO : 3
Idade : 21
Áreas de atuação : Desenho digital,edição de imagem,edição de vídeo e sou bom em contar historias.
Respeito as regras :
Re: Duvida sobre OnTriggerEnter
Não coloquei o codigo de ganhar pontos e trocar de area ainda,ainda to fazendo isso dai
Érick D.S.S- Iniciante
- PONTOS : 1729
REPUTAÇÃO : 3
Idade : 21
Áreas de atuação : Desenho digital,edição de imagem,edição de vídeo e sou bom em contar historias.
Respeito as regras :
Re: Duvida sobre OnTriggerEnter
Provavelmente você esqueceu de marcar um dos objetos como "isTrigger", ou nenhum dos dois possui um rigidBody;
se depois de checar isso não funcionar, dê uma conferida nas tags, pra ver se não tem nada digitado errado ou se o objeto realmente possui a tag
se depois de checar isso não funcionar, dê uma conferida nas tags, pra ver se não tem nada digitado errado ou se o objeto realmente possui a tag
Fagner- Moderador
- PONTOS : 4443
REPUTAÇÃO : 667
Áreas de atuação : Modelagem 3D, Programação.
Respeito as regras :
Re: Duvida sobre OnTriggerEnter
As tags eu verifiquei,estão corretas.
O jogador esta com rigdybody e box collider com seu in trigger desativado.
O caixote esta com rigdybody e box collider com seu in trigger ativado.
Não deu certo,fiz invertido e também não deu certo.
Tem outro meio de escrever essa void?
O jogador esta com rigdybody e box collider com seu in trigger desativado.
O caixote esta com rigdybody e box collider com seu in trigger ativado.
Não deu certo,fiz invertido e também não deu certo.
Tem outro meio de escrever essa void?
Érick D.S.S- Iniciante
- PONTOS : 1729
REPUTAÇÃO : 3
Idade : 21
Áreas de atuação : Desenho digital,edição de imagem,edição de vídeo e sou bom em contar historias.
Respeito as regras :
Re: Duvida sobre OnTriggerEnter
- Código:
//dispara ao entrar em um object trigger- isTrigger precisa esta ativado, other=outro objeto/trigger
void OnTriggerEnter(Collider other){
if (transform.gameObject.tag == "caixote")
{
TocandoEm = "Caixote";
}
}
segundo o que eu lembro transform.gameObject.tag se refere ao proprio player ,nao ao caixote, usa other.gameObject.tag=="caixote" pra identificar os caixotes
- Código:
void OnTriggerEnter(Collider other){
if (other.gameObject.tag == "caixote"){
//açao
TocandoEm = "Caixote";
}
}
nao sei se é isso que voce ta fazendo, más é uma correçao,qualquer erro é pq fiquei muito tempo sem pc kkk
Última edição por FelipeSouza11 em Ter Abr 07, 2020 6:12 pm, editado 1 vez(es) (Motivo da edição : correçao de script)
Re: Duvida sobre OnTriggerEnter
Deu certinho!Muito obrigado :D
Mas,sem querer gastar seu tempo...poderia me explicar o significado do "(Collider other)" da void ontriggerenter?e a diferença entre "==" e "="?
Mas,sem querer gastar seu tempo...poderia me explicar o significado do "(Collider other)" da void ontriggerenter?e a diferença entre "==" e "="?
Érick D.S.S- Iniciante
- PONTOS : 1729
REPUTAÇÃO : 3
Idade : 21
Áreas de atuação : Desenho digital,edição de imagem,edição de vídeo e sou bom em contar historias.
Respeito as regras :
Re: Duvida sobre OnTriggerEnter
- Código:
//ocorre quando o objeto que contem o script entrar no objeto trigger, ocorre 1 chamada
void OnTriggerEnter(Collider other){
if(other.gameObject.tag=="chao"){
//se eu entra
}
}
//ocorre quando o objeto que contem o script entrar e continuar no objeto trigger chamado enquanto continuar no objeto trigger
void OnTriggerStay(Collider other){
}
//ocorre quando o objeto que contem o script sair do objeto trigger
void OnTriggerExit(Collider other){
}
other.gameObjecct=refere se aquele objeto na cena marcado como is Trigger
- Código:
"==" //variavel bool checar se duas ou mais variaveis sao iguais
ex:
int a=2;
int b=5;
if(a==b) //seria if(2==5) -> false (2 não é igual a 5)!
"=" serve para atribuir um valor a qualquer variavel,
ex:
int a=5; //atribui 5 a variavel "a",
"=" //atribuir variaveis
"==" comparar variaveis se são iguais ou não. (se retorna true, se nao retorna false)
fiquei um longo tempo sem pc então tou meio destreinado
entenda os Operadores basicos -> Aqui
Re: Duvida sobre OnTriggerEnter
Entendi,não é tão dificil!,mas vou anotar isso dai,se não vou esquecer kkkk
vlw !!!,muito obrigado :D
vlw !!!,muito obrigado :D
Érick D.S.S- Iniciante
- PONTOS : 1729
REPUTAÇÃO : 3
Idade : 21
Áreas de atuação : Desenho digital,edição de imagem,edição de vídeo e sou bom em contar historias.
Respeito as regras :
Tópicos semelhantes
» Dúvida sobre OnTriggerEnter
» Duvida sobre OnTriggerEnter
» OnTriggerEnter duvida
» Dúvida com void OnTriggerEnter
» Instantiate e OntriggerEnter Duvida
» Duvida sobre OnTriggerEnter
» OnTriggerEnter duvida
» Dúvida com void OnTriggerEnter
» Instantiate e OntriggerEnter Duvida
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos