Mesh Collider
Página 1 de 1
Mesh Collider
Eu usei o Mesh Collider em alguns objetos, e quando eles estão perto da parede e o player tenta andar entre o objeto e a parede ele consegue atravessar a parede, já tentei usar um box collider e mesmo colocando sobrepondo um sobre o outro o player consegue violar a colisão no pondo de encontro dos colisores, existe algum jeito de contornar isso, seja com outro colisor ou na implementação do script?
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class controlaJogador : MonoBehaviour
{
[SerializeField] Transform Player;
[SerializeField] Transform Cam;
private Rigidbody localJogador;
private Animator animacao;
public float Velocidade;
private Vector3 direcao;
float sensitivity = 60f;
Vector3 rotacao;
float rX;
float rY;
public float jump;
void Start()
{
localJogador = GetComponent<Rigidbody>();
animacao = GetComponent<Animator>();
Cursor.lockState = CursorLockMode.Locked;
}
void Update()
{
movimentacamera();
movimentaJogador();
animaJogador();
pulo();
}
void movimentaJogador()
{
float eixoX = Input.GetAxisRaw("Horizontal");
float eixoZ = Input.GetAxisRaw("Vertical");
direcao = Player.TransformVector(new Vector3(eixoX, 0, eixoZ).normalized);
rX = Mathf.Lerp(rX, Input.GetAxisRaw("Mouse X")*2, 100*Time.deltaTime);
transform.Rotate(0, rX, 0, Space.World);
}
void movimentacamera()
{
rY = Mathf.Clamp(rY - (Input.GetAxisRaw("Mouse Y")*2*100*Time.deltaTime), -30, 30);
Cam.rotation = Quaternion.Lerp(Cam.rotation, Quaternion.Euler
(rY*2, Player.eulerAngles.y, 0), 100*Time.deltaTime);
}
void pulo()
{
if(Input.GetButtonDown("Jump"))
{
localJogador.AddForce(new Vector3(0, jump*10, 0));
animacao.SetBool("pulou", true);
}
else
{
animacao.SetBool("pulou", false);
}
}
void animaJogador()
{
if(direcao != Vector3.zero)
{
animacao.SetBool("andando", true);
}
else
{
animacao.SetBool("andando", false);
}
}
void FixedUpdate()
{
localJogador.MovePosition(localJogador.position +
(direcao * Velocidade * Time.deltaTime));
}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class controlaJogador : MonoBehaviour
{
[SerializeField] Transform Player;
[SerializeField] Transform Cam;
private Rigidbody localJogador;
private Animator animacao;
public float Velocidade;
private Vector3 direcao;
float sensitivity = 60f;
Vector3 rotacao;
float rX;
float rY;
public float jump;
void Start()
{
localJogador = GetComponent<Rigidbody>();
animacao = GetComponent<Animator>();
Cursor.lockState = CursorLockMode.Locked;
}
void Update()
{
movimentacamera();
movimentaJogador();
animaJogador();
pulo();
}
void movimentaJogador()
{
float eixoX = Input.GetAxisRaw("Horizontal");
float eixoZ = Input.GetAxisRaw("Vertical");
direcao = Player.TransformVector(new Vector3(eixoX, 0, eixoZ).normalized);
rX = Mathf.Lerp(rX, Input.GetAxisRaw("Mouse X")*2, 100*Time.deltaTime);
transform.Rotate(0, rX, 0, Space.World);
}
void movimentacamera()
{
rY = Mathf.Clamp(rY - (Input.GetAxisRaw("Mouse Y")*2*100*Time.deltaTime), -30, 30);
Cam.rotation = Quaternion.Lerp(Cam.rotation, Quaternion.Euler
(rY*2, Player.eulerAngles.y, 0), 100*Time.deltaTime);
}
void pulo()
{
if(Input.GetButtonDown("Jump"))
{
localJogador.AddForce(new Vector3(0, jump*10, 0));
animacao.SetBool("pulou", true);
}
else
{
animacao.SetBool("pulou", false);
}
}
void animaJogador()
{
if(direcao != Vector3.zero)
{
animacao.SetBool("andando", true);
}
else
{
animacao.SetBool("andando", false);
}
}
void FixedUpdate()
{
localJogador.MovePosition(localJogador.position +
(direcao * Velocidade * Time.deltaTime));
}
}
Anderson Mello- Iniciante
- PONTOS : 983
REPUTAÇÃO : 0
Respeito as regras :
Re: Mesh Collider
Anderson Mello escreveu:Eu usei o Mesh Collider em alguns objetos, e quando eles estão perto da parede e o player tenta andar entre o objeto e a parede ele consegue atravessar a parede, já tentei usar um box collider e mesmo colocando sobrepondo um sobre o outro o player consegue violar a colisão no pondo de encontro dos colisores, existe algum jeito de contornar isso, seja com outro colisor ou na implementação do script?
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class controlaJogador : MonoBehaviour
{
[SerializeField] Transform Player;
[SerializeField] Transform Cam;
private Rigidbody localJogador;
private Animator animacao;
public float Velocidade;
private Vector3 direcao;
float sensitivity = 60f;
Vector3 rotacao;
float rX;
float rY;
public float jump;
void Start()
{
localJogador = GetComponent<Rigidbody>();
animacao = GetComponent<Animator>();
Cursor.lockState = CursorLockMode.Locked;
}
void Update()
{
movimentacamera();
movimentaJogador();
animaJogador();
pulo();
}
void movimentaJogador()
{
float eixoX = Input.GetAxisRaw("Horizontal");
float eixoZ = Input.GetAxisRaw("Vertical");
direcao = Player.TransformVector(new Vector3(eixoX, 0, eixoZ).normalized);
rX = Mathf.Lerp(rX, Input.GetAxisRaw("Mouse X")*2, 100*Time.deltaTime);
transform.Rotate(0, rX, 0, Space.World);
}
void movimentacamera()
{
rY = Mathf.Clamp(rY - (Input.GetAxisRaw("Mouse Y")*2*100*Time.deltaTime), -30, 30);
Cam.rotation = Quaternion.Lerp(Cam.rotation, Quaternion.Euler
(rY*2, Player.eulerAngles.y, 0), 100*Time.deltaTime);
}
void pulo()
{
if(Input.GetButtonDown("Jump"))
{
localJogador.AddForce(new Vector3(0, jump*10, 0));
animacao.SetBool("pulou", true);
}
else
{
animacao.SetBool("pulou", false);
}
}
void animaJogador()
{
if(direcao != Vector3.zero)
{
animacao.SetBool("andando", true);
}
else
{
animacao.SetBool("andando", false);
}
}
void FixedUpdate()
{
localJogador.MovePosition(localJogador.position +
(direcao * Velocidade * Time.deltaTime));
}
}
Anderson Mello- Iniciante
- PONTOS : 983
REPUTAÇÃO : 0
Respeito as regras :

» Amaçar mesh
» (UNITY 3D) Mesh Splitter - Como separar uma Mesh em multiplos Game Objects?
» ANIMAÇÃO EM MESH
» RigidBody com Box Collider Travando na Aresta de um Box Collider.
» Wheel Collider e Box Collider no Carro
» (UNITY 3D) Mesh Splitter - Como separar uma Mesh em multiplos Game Objects?
» ANIMAÇÃO EM MESH
» RigidBody com Box Collider Travando na Aresta de um Box Collider.
» Wheel Collider e Box Collider no Carro
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos