Jump to content
UnitySpain

Aceptamos donaciones vía Paypal.

UnitySpain.com es un servicio gratuito, pero mantener la Comunidad conlleva una serie de gastos.

Fondo Anual Unityspain: Donados 15,00€ de 150,00€

  • Servidor: Dominio.com y Hosting Web
  • Mantenimiento de los Foros
  • Contenido y Servicios Extras
  • Mantenimiento para Redes Sociales
Centauro5legs

Ayuda con un RayCast

Recommended Posts

OK, esto esta complejo, así que me tomare mi tiempo para explicar ...

Estoy haciendo un Script para construir dinamicamente, ya tengo la mayor parte hecha, pero tengo un problema. Necesito que la "Estructuras nuevas" se instancien en el lugar hacia donde mi personaje dirige la mirada. Pero no me sale, porque la estructura siempre se instancia en mis pies. Asumo que el problema esta a la hora de hacer el "Physics.Raycast", 

 

Tengo lo siguiente;

using UnityEngine;
using System.Collections;

public class Build : MonoBehaviour
{
    private GameObject EstructuraMuestra;
    public GameObject Estructura;
    RaycastHit myhit = new RaycasaRRRtHit ();
    Ray myray = new Ray ();
    bool EstructuraActiva;
	
    void Star(){
    
        EstructuraMuestra = Estructura;    
        Renderer[] R = EstructuraMuestra.GetComponentsInChildren<Renderer> ();
		Collider[] C = EstructuraMuestra.GetComponentsInChildren<Collider> ();

		if (EstructuraMuestra.GetComponent<Renderer> ())
			EstructuraMuestra.GetComponent<Renderer> ().material.color = new Color32 (0, 200, 0, 155);

		if (EstructuraMuestra.GetComponent<Collider> ())
			EstructuraMuestra.GetComponent<Collider> ().eneable = false;
            
        for (int i=0; i<R.Length; i++) 
				R [i].material = new Color32 (0, 200, 0, 155);

			for (int i=0; i<C.Length; i++) 
				C [i].eneable = false;

			EstructuraMuestra.name = "Estructura-Ejemplo";
			EstructuraActiva = true;
    }

    void Update ()
    {

        myray = Camera.main.ScreenPointToRay (new Vector3 ((Screen.width / 2), (Screen.height / 2), 0));

        if(EstructuraActiva == true){
            if (Physics.Raycast (myray, out myhit, 1000.0f)) {
	    	    EstructuraMuestra.transform.position = myhit.collider.transform.localPosition;
	    	    }
        }				
        
        if(Input.GetBottonMouse(0)){
            GameObject tempo = (GameObject)Instantiate (Estructura, EstructuraMuestra.transform.localPosition, EstructuraMuestra.transform.localRotation);
			tempo.transform.SetParent (GameObject.Find ("Terreno").transform);
			tempo.name = "Estructura";
			DestroyObject (EstructuraMuestra);
			EstructuraMuestra = new GameObject ();
			EstructuraActiva = false;
        }
    }
}

¿Alguien podría ayudarme?...

Pdata; Mi personaje esta en 3° persona, ¿Creen que eso afecte?....

Share this post


Link to post
Share on other sites
if (EstructuraMuestra.GetComponent<Collider> ())
			EstructuraMuestra.GetComponent<Collider> ().eneable = false;
            

No es enabled?

Edited by leocub58

Share this post


Link to post
Share on other sites
if (EstructuraMuestra.GetComponent<Collider> ())
			EstructuraMuestra.GetComponent<Collider> ().eneable = false;
            

No es enabled?

Si, pero no le pongas mucha atencion a eso, porque lo escribi, no lo copie XD

Share this post


Link to post
Share on other sites

Lo solucione del sigiente modo

 

if (Physics.Raycast (myray, out myhit, 100.0f)) {
                if (myhit.collider.name.Equals ("Terreno"))
                    EstructuraMuestra.transform.position = myhit.point;

}

 

El problema es que me estaba dando la posición original del objeto con el que colicionaba, en lugar de la cordenada donde se estaba colisionando

Share this post


Link to post
Share on other sites

×
×
  • Create New...