[RESOLVIDO] Colisor
+2
Priste_Hell
speedluk
6 participantes
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
[RESOLVIDO] Colisor
Boa tarde venho de novo com uma duvida sobre a plataforma móvel dstaroski tinha me mandado um vídeo ensinando a usar animações para move-la
o vídeo foi de grande ajuda porem agora que fui reparar não entendo oque pode estar errado fiz tudo como no vídeo so que o OnTriggerEnter não tem uma entrada precisa por cima somente nas laterais dificultando a queda do player na plataforma
e quando pulo pra sair no OnTriggerExit (com a plataforma ainda em movimento) o player recebe um leve puxão atrapalhando gravemente o pulo =/
alguem sabe dizer um caminho de como posso transformar o player em um objeto filho da plataforma e na hora exata do pulo ele deixar de ser?
o vídeo foi de grande ajuda porem agora que fui reparar não entendo oque pode estar errado fiz tudo como no vídeo so que o OnTriggerEnter não tem uma entrada precisa por cima somente nas laterais dificultando a queda do player na plataforma
e quando pulo pra sair no OnTriggerExit (com a plataforma ainda em movimento) o player recebe um leve puxão atrapalhando gravemente o pulo =/
alguem sabe dizer um caminho de como posso transformar o player em um objeto filho da plataforma e na hora exata do pulo ele deixar de ser?
Última edição por dstaroski em Dom Jan 13, 2019 9:42 am, editado 1 vez(es) (Motivo da edição : Resolvido)
speedluk- Avançado
- PONTOS : 2602
REPUTAÇÃO : 29
Idade : 32
Respeito as regras :
Re: [RESOLVIDO] Colisor
- Código:
void VirarFilho(){
transform.parent = plataform.transform
}
void DeixarFilho(){
transform.parent = null;
}
Priste_Hell- Avançado
- PONTOS : 2901
REPUTAÇÃO : 17
Idade : 23
Áreas de atuação : Programador e roteirista.
Respeito as regras :
Re: [RESOLVIDO] Colisor
o meu ta assim..
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Piso : MonoBehaviour {
public GameObject player;
private void OnTriggerEnter(Collider other) {
if (other.gameObject == player) {
player.transform.parent = transform;
}
}
private void OnTriggerExit(Collider other) {
if (other.gameObject == player) {
player.transform.parent = null;
}
}
}
O problema não seria transformar o player em parent é ele entrar no trigger pelos lados e por cima e não dar a agarrada quando for pular fora,essa agarrada é o maior problema ja tentei contornar esse detalhe de todos jeitos que conheço(não conhecendo muito ne) ^^
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Piso : MonoBehaviour {
public GameObject player;
private void OnTriggerEnter(Collider other) {
if (other.gameObject == player) {
player.transform.parent = transform;
}
}
private void OnTriggerExit(Collider other) {
if (other.gameObject == player) {
player.transform.parent = null;
}
}
}
O problema não seria transformar o player em parent é ele entrar no trigger pelos lados e por cima e não dar a agarrada quando for pular fora,essa agarrada é o maior problema ja tentei contornar esse detalhe de todos jeitos que conheço(não conhecendo muito ne) ^^
speedluk- Avançado
- PONTOS : 2602
REPUTAÇÃO : 29
Idade : 32
Respeito as regras :
Re: [RESOLVIDO] Colisor
Já tentou usar OnCollision em vez de OnTrigger? o OnTrigger só detecta quando entra o OnCollision só de tocar, no caso como uma plataforma, se for tentar lembra de tirar o Trigger do Colisor
Andeton- Iniciante
- PONTOS : 2757
REPUTAÇÃO : 4
Respeito as regras :
Re: [RESOLVIDO] Colisor
Acabo de tentar aqui de diversas formas que vi no youtube com OnCollision não acontece nada parece que nem detecta a colisão o player não vira parente nem aparece nada quando do debug '-'
speedluk- Avançado
- PONTOS : 2602
REPUTAÇÃO : 29
Idade : 32
Respeito as regras :
Re: [RESOLVIDO] Colisor
Colisões só funcionam com Rigidbody, portanto os elementos que irão se colidir devem possuir Rigidbody. Verifique isto.
JohnRambo- Moderador
- PONTOS : 5100
REPUTAÇÃO : 661
Idade : 24
Áreas de atuação : Unity;
Programação;
Música e Sonorização;
Graduado em Análise e Desenvolvimento de Sistemas;
Respeito as regras :
Re: [RESOLVIDO] Colisor
Sim callyde na verdade queria que funcionasse com ontriggerstay mesmo so que ainda com ontrigger permanece o problema do player da uma agarrada na plataforma '-'
sobre os rigidbody vi em alguns fóruns falando que os 2 objetos não podem ter o RB mas ainda assim tentei nos 2 tentei um com RB e vice versa '-'
meio que desistindo de mover esse piso ^^
sobre os rigidbody vi em alguns fóruns falando que os 2 objetos não podem ter o RB mas ainda assim tentei nos 2 tentei um com RB e vice versa '-'
meio que desistindo de mover esse piso ^^
speedluk- Avançado
- PONTOS : 2602
REPUTAÇÃO : 29
Idade : 32
Respeito as regras :
Re: [RESOLVIDO] Colisor
Tenta fazer assim:
Por exemplo, pular com a tecla "A":
Por que funcionaria?
Quando você pula em cima da plataforma, por alguns instantes vc ainda está colidindo com a plataforma, então nessa fração de segundos o código ainda fará com que o player seja filho da plataforma, só depois de sair da colisão (OnTriggerExit) que a plataforma vai se desfiliar do player, mas por uma pequena parcela de segundos, o player vai ficar filiado à plataforma quando pular, o que está acarretando esse erro e essa sensação de que "tem algo puxando".
Então ao invés de unicamente esperar que o player saia totalmente da área de colisão com a plataforma, faça com que o player deixe de ser filho dela assim que a tecla de pulo for apertada, dessa forma, não precisa esperar o player sair dessa área de colisão.
Talvez precise melhorar o código e além de verificar a tecla, precise verificar se o player ainda é de fato filho da plataforma, porque se não for e a tecla de pulo for pressionada, talvez possa dar um errinho por ele não encontrar o player como filho, mas primeiro teste esse método acima, se der certo a gente conserta esse errinho.
- Código:
Update(){
if(Input.GetKey(Botao de pulo aqui){
player.transform.parent = null;
}
}
Por exemplo, pular com a tecla "A":
- Código:
Update(){
if(Input.GetKey(KeyCode.A){
player.transform.parent = null;
}
}
Por que funcionaria?
Quando você pula em cima da plataforma, por alguns instantes vc ainda está colidindo com a plataforma, então nessa fração de segundos o código ainda fará com que o player seja filho da plataforma, só depois de sair da colisão (OnTriggerExit) que a plataforma vai se desfiliar do player, mas por uma pequena parcela de segundos, o player vai ficar filiado à plataforma quando pular, o que está acarretando esse erro e essa sensação de que "tem algo puxando".
Então ao invés de unicamente esperar que o player saia totalmente da área de colisão com a plataforma, faça com que o player deixe de ser filho dela assim que a tecla de pulo for apertada, dessa forma, não precisa esperar o player sair dessa área de colisão.
Talvez precise melhorar o código e além de verificar a tecla, precise verificar se o player ainda é de fato filho da plataforma, porque se não for e a tecla de pulo for pressionada, talvez possa dar um errinho por ele não encontrar o player como filho, mas primeiro teste esse método acima, se der certo a gente conserta esse errinho.
Re: [RESOLVIDO] Colisor
Cara namoral detalhe desse tava na void update um problema de um único frame e não percebi '-'
tu me salvou, funcionou perfeitamente e ja eliminando problemas similares que eu tava contornando aqui ^^
muitíssimo obrigado MayLeone e a todos que puderam ajudar
tu me salvou, funcionou perfeitamente e ja eliminando problemas similares que eu tava contornando aqui ^^
muitíssimo obrigado MayLeone e a todos que puderam ajudar
speedluk- Avançado
- PONTOS : 2602
REPUTAÇÃO : 29
Idade : 32
Respeito as regras :
Tópicos semelhantes
» [RESOLVIDO] Duvida com colisor
» [RESOLVIDO] Como destruir um objeto com colisor?
» Como faço pra um colisor não reconhecer outro colisor sem usar IsTrigger
» Problemas com colisor
» Colisor com Sprites (Unity 2D)
» [RESOLVIDO] Como destruir um objeto com colisor?
» Como faço pra um colisor não reconhecer outro colisor sem usar IsTrigger
» Problemas com colisor
» Colisor com Sprites (Unity 2D)
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos