Bug com detecção de chão
3 participantes
Página 1 de 1
Bug com detecção de chão
Olá, estou tendo problemas com a detecção de chão para meu character controller. Não sei se é a maneira correta, mas estou fazendo com 3 Raycast (foi a solução que encontrei para conseguir descer ladeiras). Porém, meu problema esta sendo em beiradas de superfícies quadradas, em que o Raycast não detecta nada mas o player não cai.
Agradeço qualquer ajuda desde já
- Código:
RaycastHit hitInfo;
isGrounded = Physics.Raycast (transform.position, -transform.up, out hitInfo, checkGroundDistance,layer);
float dist = (transform.position.y -hitInfo.point.y)*2;
RaycastHit infoSlope;
RaycastHit infoSlopeBack;
slope = Physics.Raycast (transform.position + transform.forward, -transform.up,out infoSlope, 3f, layer);
slopeBack = Physics.Raycast (transform.position - transform.forward, -transform.up,out infoSlopeBack, 3f, layer);
Agradeço qualquer ajuda desde já
Joaopm1- Avançado
- PONTOS : 2892
REPUTAÇÃO : 12
Idade : 26
Áreas de atuação : Aprendiz de C# , Unity e Blender.
Respeito as regras :
Re: Bug com detecção de chão
Alguém ?
Joaopm1- Avançado
- PONTOS : 2892
REPUTAÇÃO : 12
Idade : 26
Áreas de atuação : Aprendiz de C# , Unity e Blender.
Respeito as regras :
Re: Bug com detecção de chão
você esta usando o rigidbody ?
fabriciorsz34- Avançado
- PONTOS : 3338
REPUTAÇÃO : 25
Idade : 24
Áreas de atuação : C#,unity,cinema 4D, SketchUp
Respeito as regras :
Re: Bug com detecção de chão
Nao, estou usando character controller, e a gravidade com controller.Move ().
Joaopm1- Avançado
- PONTOS : 2892
REPUTAÇÃO : 12
Idade : 26
Áreas de atuação : Aprendiz de C# , Unity e Blender.
Respeito as regras :
Re: Bug com detecção de chão
seria bem mais facil vc usar o rigidbody e configura-lo para ficar em pé , eu acho não estou acostumado a usar movimentação assim
fabriciorsz34- Avançado
- PONTOS : 3338
REPUTAÇÃO : 25
Idade : 24
Áreas de atuação : C#,unity,cinema 4D, SketchUp
Respeito as regras :
Re: Bug com detecção de chão
Infelizmente não me adaptei com rigidbody pois nao consegui resolver outro problema que ocorre com ele. Ate então o character controller esta me servindo bem, exeto por este problema de detecção de chão.
Joaopm1- Avançado
- PONTOS : 2892
REPUTAÇÃO : 12
Idade : 26
Áreas de atuação : Aprendiz de C# , Unity e Blender.
Respeito as regras :
Re: Bug com detecção de chão
carinha, no meu caso, usei 5 raycast, um em cada extremidade do Capsule Collider e um no meio, o código ficou tipo assim:
Essa função retorna TRUE se algum raycast estiver tocando o chão, mesmo que seja em superfícies quadradas ou estreitas, pelo menos um deles vai estar tocando o outro objeto e a função vai retornar TRUE.
Espero ter ajudado, flws.
- Código:
private bool IsGrounded()
{
Vector3 LeftRayStart;
Vector3 RightRayStart;
Vector3 FrontRayStart;
Vector3 BackRayStart;
Vector3 CenterRayStart;
LeftRayStart = capCol.bounds.center;
RightRayStart = capCol.bounds.center;
FrontRayStart = capCol.bounds.center;
BackRayStart = capCol.bounds.center;
CenterRayStart = capCol.bounds.center;
LeftRayStart.x -= capCol.bounds.extents.x;
RightRayStart.x += capCol.bounds.extents.x;
FrontRayStart.z -= capCol.bounds.extents.z;
BackRayStart.z += capCol.bounds.extents.z;
Debug.DrawRay(LeftRayStart, Vector3.down,Color.magenta);
Debug.DrawRay(RightRayStart, Vector3.down, Color.cyan);
Debug.DrawRay(FrontRayStart, Vector3.down, Color.black);
Debug.DrawRay(BackRayStart, Vector3.down, Color.white);
Debug.DrawRay(CenterRayStart, Vector3.down, Color.white);
return (Physics.Raycast(LeftRayStart, Vector3.down, 0.33f) || Physics.Raycast(RightRayStart, Vector3.down, 0.33f)
|| Physics.Raycast(FrontRayStart, Vector3.down, 0.33f) || Physics.Raycast(BackRayStart, Vector3.down, 0.33f)
|| Physics.Raycast(CenterRayStart, Vector3.down, 0.33f));
}
Essa função retorna TRUE se algum raycast estiver tocando o chão, mesmo que seja em superfícies quadradas ou estreitas, pelo menos um deles vai estar tocando o outro objeto e a função vai retornar TRUE.
Espero ter ajudado, flws.
bruno700mb- Membro
- PONTOS : 2557
REPUTAÇÃO : 6
Áreas de atuação : Programação Delphi - Pascal e PL/SQL. Unity 5 com C#.
Respeito as regras :
Re: Bug com detecção de chão
Obrigado amigo, essa foi minha solução por enquanto tambem. Mas sera que utilizar tanto raycast nao pesa muuto no processamento?
Joaopm1- Avançado
- PONTOS : 2892
REPUTAÇÃO : 12
Idade : 26
Áreas de atuação : Aprendiz de C# , Unity e Blender.
Respeito as regras :
Re: Bug com detecção de chão
no meu projeto não senti muito pesado não, é um rpg mobile de mundo aberto, até agora foi de boa, mas faz uns testes aí
bruno700mb- Membro
- PONTOS : 2557
REPUTAÇÃO : 6
Áreas de atuação : Programação Delphi - Pascal e PL/SQL. Unity 5 com C#.
Respeito as regras :
Joaopm1- Avançado
- PONTOS : 2892
REPUTAÇÃO : 12
Idade : 26
Áreas de atuação : Aprendiz de C# , Unity e Blender.
Respeito as regras :
Tópicos semelhantes
» Como fazer player ir do chão pro teto e do teto pro chão (2D game)
» Detecção de Inimigo
» detecção de rotação.
» Problemas na detecção de colisão
» PEGAR ARMA DO CHÃO
» Detecção de Inimigo
» detecção de rotação.
» Problemas na detecção de colisão
» PEGAR ARMA DO CHÃO
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos