Unity Spain

Post Antiguos => General (Antiguo) => Mensaje iniciado por: Cesar Acosta en Noviembre 23, 2016, 04:50:03 PM

Título: Ayuda Script en C#
Publicado por: Cesar Acosta en Noviembre 23, 2016, 04:50:03 PM
1-Como puedo instanciar un objeto y hacerlo hijo de otro 
 
2-Como puedo hacer un velocímetro? 
Título: Ayuda Script en C#
Publicado por: kingtrase en Noviembre 23, 2016, 04:59:52 PM
para la primera es: hijo.transform.SetParent (padre.transform);
 
para la segunda: tendras que aprender por tu cuenta ya que influye el sistema con el que mueves el coche, la relacion de tamaño de tus objetos con la de unity, etc... o puedes usar san google y tener un script de velocimetro que no podras implantar a tu proyecto.
Título: Ayuda Script en C#
Publicado por: lightbug en Noviembre 23, 2016, 08:36:28 PM
Para 1 No quiero sonar cortante pero si buscas en google tenes 7000 resultados, y seguro para el 2020 vas a tener 14000 resultados, porque siguen y siguen preguntado lo mismo. Una pequeña busqueda te da lo que queres y no llenamos los servidores con las mismas preguntas una y otra vez (distinto es la pregunta 2 que es valida)
 
 
 
Para 2 tenes que relacionar rigidbody velocity con algun valor del velocimetro, puede ser el angulo de la aguja, puede ser el nivel y/o color, si es de esos lineales.
 
Aca te dejo uno de tipo lineal, el metodo que usas depende, yo tenia algo parecido (era para abrir puerta XD) en donde la textura cargadora se hacia ancha, como los colores en horizontal no variaban parecia que se cargaba. Podes tambien hacerlo de otras formas aca hay que ser creativo mas que nada.
 
 
 
velocimetro.cs (va en el objeto con rigidbody)
 


[RequireComponent ( typeof(Rigidbody) )]
public class velocimetro : MonoBehaviour {

public float maximaVelocidad = 100;
public float maximoAncho = 500;
public Texture TexturaLinealFondo;
public Texture TexturaLineal;
private float velocidad;
private Rect rectFondo;
private Rect rectVelocidad;
void Start()
{
   rectFondo = new Rect( 20 , 20 , 500 , 100 );
 
}
void Update()
{      
   float velocidad = GetComponent<Rigidbody> ().velocity.magnitude;
   float relacionVelocidadAncho = (velocidad / maximaVelocidad) * maximoAncho;
   rectVelocidad = new Rect( 20 , 20 , relacionVelocidadAncho , 100 );
}
void OnGUI()
{
   //Si no seleccionas las dos no se dibuja nada
   if(!TexturaLineal || !TexturaLinealFondo)
      return;
   GUI.DrawTexture (rectFondo, TexturaLinealFondo);
   GUI.DrawTexture (rectVelocidad, TexturaLineal);
   GUI.Label ( new Rect(10,10,50,50), GetComponent<Rigidbody>().velocity.magnitude.ToString());
}
}

 
El de tipo Aguja en formato GUI es parecido, (no se me ocurre si lo podes hacer en OnGUI). Basicamente creas un sprite nuevo con la imagen de la aguja, funciona igual que el anterior, lo unico que en vez de calcular la velocidad y asociarla a un valor de ancho (float) lo haces con un valor de angulo. Tenes que tener en cuenta el min y max angulo que queres y en update los determinas.
 
Saludos
Título: Ayuda Script en C#
Publicado por: Cesar Acosta en Noviembre 25, 2016, 11:53:04 AM
Yo lo que necesito es que él velocímetro este en una variable de tipo numérica 
 
No es para un auto 
 
Lo necesito para otra cosa pero tengo que saber con que velocidad va un objeto 
Título: Ayuda Script en C#
Publicado por: lightbug en Noviembre 25, 2016, 05:50:19 PM

Como puedo hacer un velocímetro?  

 
Si cualquier terricola lee eso que te parece que interpretaria?
 
Un velocimetro es un instrumento que mide la velocidad. No podes meter un velocimetro en una variable. Vos lo que queres es la velocidad, mucho mas facil todavia ya que para cada rigidbody tenes una variable propia de velocidad. La tenes en Rigidbody.velocity:
 
Velocity (https://docs.unity3d.com/ScriptReference/Rigidbody-velocity.html)