Unity Spain

Post Antiguos => General (Antiguo) => Mensaje iniciado por: ramunda en Agosto 01, 2016, 02:05:50 AM

Título: raycast va loco
Publicado por: ramunda en Agosto 01, 2016, 02:05:50 AM
Hola buenas noches, queria preguntarles a ver si tienen alguna idea de porque el Raycast falla en este caso.
 
Bueno tengo un simple sistema de disparo el cual instancia un prefab y da fuerza a el RB etc.
 
Esto va de perlas .
 
El problema es cuando el raycast detecta el objecto al que colisiona en este caso "feria", l hace cuando le da la gana , aveces marca aveces no, al igual que se desvía solo , no siempre va recto y no lo entiendo, lo se por la marca de el agujero de la bala que instancia , si te mueves un poco es como si tardara en reaccionar o no se...alomejor se pega con todo lo que instancia y rebota..puede ser?
 
Lo curioso es que el objeto en si se destruye bien .
 
dejo el script , gracias de antemano.
 
 
 

using UnityEngine;
using System.Collections;
public class disparabolasandroid : MonoBehaviour {
public GameObject CannonBall;
public float shotForce = 1000;
AudioSource audio;
public GameObject explosion;
GameObject cannonBall;
public AudioClip sonidocanon;
private Animation anim;
public GameObject agujero;
public GameObject xispa;
 
void Start()
{
audio = GetComponent < AudioSource> ();
anim = GameObject.Find("pistola").GetComponent<Animation> ();
}
   
public void disparabola()
{
if (Input.GetMouseButtonDown())
explosion.SetActive (true);
cannonBall = GameObject.Instantiate(CannonBall as GameObject);
cannonBall.transform.position = transform.position;
RaycastHit hit;
Ray ray = new Ray (transform.position, transform.forward);
if (Physics.Raycast (ray, out hit,300f))
{
if (hit.transform.gameObject.tag == "feria")
{
puntos.instance.puntuacion = +1;
Debug.Log ("PUNTACO");
}
Instantiate (agujero,hit.point,Quaternion.FromToRotation(Vector3.up,hit.normal));
Instantiate (xispa,hit.point,Quaternion.FromToRotation(Vector3.up,hit.normal));
    }
Rigidbody rBody = cannonBall.GetComponent<Rigidbody> ();
rBody.AddForce (transform.forward * shotForce, ForceMode.Force);
audio.PlayOneShot(sonidocanon, 0.7F);
Instantiate (explosion,transform.position,transform.rotation);
cuentabolas.instance.bolas -= 1;
anim.Play ("fire1");
}

 
 
 
 
 
 
 
 
 
 
Título: raycast va loco
Publicado por: iRobb en Agosto 01, 2016, 08:35:03 PM
Yo le pondría un linerenderer para ver donde apunta exactamente. Luego el tema de la distancia del raycast, a ver si se queda corto?
Título: raycast va loco
Publicado por: ramunda en Agosto 01, 2016, 08:50:30 PM
Cita de: iRobb date=1470076503Yo le pondría un linerenderer para ver donde apunta exactamente. Luego el tema de la distancia del raycast, a ver si se queda corto?
   


iRobb ,grandísima idea lo de el line renderer, ni se me había ocurrido.le habia puesto un Debug.Drawline pero claro solo salia cuando se ejecutaba y no se quedaba fijo...
 
 
 
Estaba más torcido que una cola de mono!! por eso a veces puntuaba doble o no puntuaba según se movía el player.El echo de que estuviera torcido es que lo tengo en un empty delante de la escopeta para instanciar la bala etc. y aunque parecía recto....
 
Así que.
 
Muchas gracias por la idea!! ya esta solucionado !! hacia falta un nivel...jejej en este caso linerenderer!!
 
Saludos y gracias!!