Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - NicoProner

#1
Ahora mismo miro eso, gracias amigo cualquier novedad  te aviso...
#2
General (Antiguo) / Duda olas.
Enero 18, 2016, 05:10:15 PM
Me parece ami? o sos muchos rays esos? quizás controla todo con eso...
#3
[quote author=NicoProner" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="34939" data-ipsquote-contentcommentid="126210">Hola amigos y amigasVengo a preguntarles un problema que tengo, seguro es alguna pavada pero se me hace difícil pensar como hacerlo.El tema es el siguiente... Vieron como en los juegos de supervivencia donde se puede construir?...Unos de los ejemplo es rust, donde tu tienen un fundation lo colocas y cuando miras el fundation te "AUTOACOMODA" el siguiente fundation alado y si moves el mause se cruza a otro angulo y así, depende donde mires te lo autoacomoda listo para hacer click y construir...Entonces resumiendo seria que: cuando en rust se mira el fundation(Piso donde desde ahí se empieza a poner paredes etc) te autoacomoda o te lleva el prefundation (El fundation transparente que muestra a donde se va a poner) a un costado del fundation osea el fundation tiene 4 lados vos miras cierta parte del fundation y te lleva a un costado acomodando la facibilidad de construiccion porque te acomoda el prefundation alado pegado. Creo que con esta "explicacion" van a entender...Este es el Script...
   void Update () {Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);

   //Vector3 fwd = transform.TransformDirection (Vector3.forward);
   if(Physics.Raycast(ray,out hit, 10)){
      Prefab.position = hit.point;
      //aca busca con el hit del rayo busca un tag llamado cubo
      if(hit.transform.tag==("Cubo")){
      //si encuentra el rayo esto: entonces print, me lleva el prefundation a una nueva posicion. y esa posicion es un pl un prefab que esta alado del fundation
. todo esto prefabricado...
         print ("hit LookAt");
         Prefab.position = new Vector3 (p1.transform.position.x,p1.transform.position.y,p1.transform.position.z);
      }
      if (Input.GetButtonDown ("Fire1")&&(Libre)) {
         Instantiate (Piso, Prefab.position, Prefab.rotation);

         

      }
      //print (hit.point);

   }
   
   }
}
 Bien como ven, el problema de el script es que el prefab donde se instancia el prefundation, es que ahi un solo prefab por lo tanto una sola posicion.Osea que en un fundation puede andar bien, pero en otro al mirarlo va a llevar el prefundation a donde estaba el otro fundation. Bueno eso necesito una solucion o script para poder autoacomodar el fundation al mirar un PREfundation, seria con rays pero como?PD: EL PRE FUNDATION SERIA ESTO...Gracias... [/quote]
[quote author=leocub58" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="34939" data-ipsquote-contentcommentid="126211 date=1453132958]Yo eso lo hice una vez que andaba enviciado al Rust, conseguí el mismo efecto que ellos pero no lo hice con raycast, recuerdo muy vagamente el código y era con Vector3.Distance[/quote]Mmm, distance? que rarro como seria una minima Ayudita o algo?
#5
[quote author=juanma_teso" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="34891" data-ipsquote-contentcommentid="125988">Supongo que el prefab que mueves a los puntos tendrá un collider. Implementa la función OnColliderEnter(); en la que si colisiona con un objeto que no debe (porque con el suelo siempre tendrá colisiones) te ponga un booleano en false, un código a grosso modo sería el siguiente, para que te hagas una idea.
bool libre = true;void OnCollisionEnter (Collision col)
{
    if(col.tag("Casa o construccion o el tag que quieras jeje"))
    {
        libre = false;
    }
    else
        libre = true;
}

void Update ()
{
    if(Physics.Raycast(--))
    {
        prefab.position = hit.poin;
        if(libre && Input.GetButton("Space"))
        {
            //Construir
        }
    }
}
Tengo que aclarar que solo funcionaría si el script lo lleva el objeto prefab, que es el que detectaría las colisiones con los otros objetos[/quote]Amigo Lo intentare Gracias de verdad...
#6
[quote author=juanma_teso" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="34891" data-ipsquote-contentcommentid="125968 date=1452605520]La solución más rápida y fácil sería poner los colliders más anchos, pero seguro que hay otras formas.Pero para estos casos creo que se suele usar una malla o Tilemap, una matriz [][] que cubra todo el terreno y detecte las zonas ocupadas y libres.[/quote]
#7
[quote author=GSG3D" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="34891" data-ipsquote-contentcommentid="125945 date=1452577995]Con lo poco que entendi, utiliza la variable hit para obtener con que esta colisionando el rayo. if(hit.gameObject.tag ==...)[/quote]Sisi eso si se, pero el problema es que como la imagen de arriba muestra cuando apenas el fundation "VERDE" toca la con la punta al cubo yo quiero que no se pueda construir, en cambio si es con hit, solo va a hacer en un punto osea si toca el hit al cubo no se va a poder construir pero si el fundation toca la punta del cubo el hit no lo detectara ya que esta en el terrain no se si logras comprender :c  el ray no lo detectara me entiendes? igual gracias.
#8
Hola amigos Bueno, tengo un problema que no se me ocurre nada, como que estoy en blanco quizas sea comprobar con tags o no se como bueno.. El tema es que cuando fundation que tengo con el raycast cuando no toque nada por ejemplo un palo o otro fundation, que si se pueda, y tambien que este tocando el terreno, que si se pueda construir, pero claro si toca o colisiona con algo de eso que no toque.
pensaba añadir algo que compruebe pero no se me ocurre nada porque el raycast no funcionaria porque si por ejemplo el borde solo este colisionando el rayo no lo detectaria. seria añadiendole un colision al fundation y que detecte si toca algun gameobject?...
Fotos...Bueno las fotos quedaron ahi...La primera es cuando si puedo, la segunda es cuando no puedo, y lo mismo con la tercera quiero que no se pueda...Creo que me entendieron.Pido porfavor que el script sea c# porque se me va a mezclar todo. aca el script con el que hago esto asi de paso ayudo a alguien y me lo modifican a ver que lineas le tengo que añadir para que esto compruebe DESDE YA GRACIAS...
using UnityEngine;
using System.Collections;

public class Construir : MonoBehaviour {
RaycastHit hit;
public Transform Prefab;
public Transform Piso;


// Use this for initialization
void Start () {

}

// Update is called once per frame
void Update () {
   Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
   //Vector3 fwd = transform.TransformDirection (Vector3.forward);
   if(Physics.Raycast(ray,out hit, 10)){
      Prefab.position = hit.point;
      if(Input.GetButtonDown("Fire1")){
         if(){
/*aca pensaba añadir algo que compruebe pero no se me ocurre nada porque el raycast no funcionaria porque si por ejemplo el borde solo este colisionando el rayo no lo detectaria.*/

         }
         Instantiate (Piso, Prefab.position, Prefab.rotation);

      }
      //Instantiate (clon, objeto, Quaternion.identity);
      print (hit.point);

   }

}
}