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
NicoProner

Ayuda con Sistema de construccion

Recommended Posts

PRE FUNDATION...1.thumb.png.ab21f7e6b48622099430903c9601

Hola amigos y amigas

Vengo 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 fundation, seria con rays pero como?

 

Gracias...

 

Edited by NicoProner

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Hola amigos y amigas

Vengo 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...

1.thumb.png.ab21f7e6b48622099430903c9601

Gracias...

 

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

Mmm, distance? que rarro como seria una minima Ayudita o algo?

Share this post


Link to post
Share on other sites

 

Mmm, distance? que rarro como seria una minima Ayudita o algo?

Pues creo que lo hice con gameObject vacíos que serían la posicion de las paredes dentro del fundation, y cuando con los planos seleccionabas la pared dependiendo de la distancia se quedaba en la posición de ese gameObject, luego hacias click e instanciaba la pared.

 

Un poco chapuza pero más fácil que con raycast es.

Edited by leocub58

Share this post


Link to post
Share on other sites

×
×
  • Create New...