Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

Problema con funcion OnCollisionEnter()

Iniciado por 0c0de, Junio 17, 2015, 10:10:08 PM

Tema anterior - Siguiente tema
Junio 17, 2015, 10:10:08 PM Ultima modificación: Junio 19, 2015, 06:13:42 PM por 0c0de
Solucionado
 

vereis el problema que tengo es que no me reconoce bien las colisiones de un gameobject o sea de un cubo primero lo hice con un el box collider que lleva de serie el cubo pero no funcionaba le asigne un rigidbody y si me funciona pero no a la misma vez el problema es que me las detecta solo si le doy en las esquinas o en la parte de abajo si le doy en el centro no pasa nada bueno pongo el codigo para que me podais decir en que me he equivocado

using UnityEngine;
using System.Collections;
public class DanoBala : MonoBehaviour {
private float vida;
private float dano;
// Use this for initialization
void Start () {
   vida = 100;
   dano = 20;
}

// Update is called once per frame
void Update () {

}
void OnCollisionEnter(Collision colision){
   if(colision.collider.tag == "enemigo"){
      Debug.Log (vida -= dano);
      Debug.Log ("Hay Contacto");
   }
   else{
      Debug.Log ("No hay contacto");
   }
}
}

Junio 18, 2015, 08:58:19 AM #1 Ultima modificación: Junio 18, 2015, 09:00:34 AM por ramunda
Cita de: 0c0de date=1434571808 
vereis el problema que tengo es que no me reconoce bien las colisiones de un gameobject o sea de un cubo primero lo hice con un el box collider que lleva de serie el cubo pero no funcionaba le asigne un rigidbody y si me funciona pero no a la misma vez el problema es que me las detecta solo si le doy en las esquinas o en la parte de abajo si le doy en el centro no pasa nada bueno pongo el codigo para que me podais decir en que me he equivocado

using UnityEngine;
using System.Collections;
public class DanoBala : MonoBehaviour {
private float vida;
private float dano;
// Use this for initialization
void Start () {
   vida = 100;
   dano = 20;
}

// Update is called once per frame
void Update () {

}
void OnCollisionEnter(Collision colision){
   if(colision.collider.tag == "enemigo"){
      Debug.Log (vida -= dano);
      Debug.Log ("Hay Contacto");
   }
   else{
      Debug.Log ("No hay contacto");
   }
}
}

Buenos dias , has probado a poner  la pestaña is triger?? en el box colider me refiero,comentas que el cubo llevaba uno de serie, quilato asegúrate de que no queden 2 box coliders,  el rigid body si es un cubo lo unico que te va a dar son problemas( o no) pero no afecta realmente a la colision , asegúrate no obstante de que el rigid no lleva gravedad ni kinetic.
 
También se me ocurre si has dejado bastante espacio de box collider osea ensanchado el radio de el mismo y no haberlo dejado pegado al cubo.
 
P.D, el cubo es un cubo asesino parece ser no?, le quita vida al enemigo cunado cocha con el.
 
Espero que sea algo de esto...es lo que se me ocurre asi de primeras que aun estoy sin el cafe .
 
Ya nos contaras . Suerte

También comprueba la escala del objeto y del coliders ya que si opera por debajo de 0.5 pueden fallar las físicas.
Enviado desde mi SM-N910F mediante Tapatalk

Nada no consigo hacer que funcione esto es una rayada de cabeza

Dices que funciona a veces.  Para disparar contra algo (usando una bala física) necesitas  la bala con (rigidbody y collider) y un objetivo con collider (no hace falta rigidbody).
 
A que velocidad se mueve la bala? si es muy alta pueden fallar las físicas. Gradúa la velocidad...También debes ponerle continuous dinamic e interpolate a la bala

FNK Games  Games Developer  -  Juegos realizados en Unity para iOS y Android



Ya lo he conseguido solucionar al final he hecho lo que menos queria hacer crear un nuevo proyecto pasarlo todo a ese nuevo proyecto y despues le he vuelto a poner los colliders y tambien he hecho lo que ha dicho el compañero mantis
 
Muchas gracias por intentarlo

Etiquetas: