Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

Mover brazo con Mouse 2d

Iniciado por #Patow, Julio 12, 2018, 02:49:11 PM

Tema anterior - Siguiente tema
Buenas amigos, lo que quiero saber es un script de un jugador sea cual sea el modelo que el brazo esté configurado para seguir el mouse y disparar si es necesario, etcétera.
 
Para que tengan una idea, algo como esto: 
 


   
eature=oembed" width="480">

 
 
 
 
 
Ese tutorial es de flash ya es viejo y quiero saber como hacer para llevar un script parecido a unity.-



   
eature=oembed" width="480">

 
Aquí un ejemplo claro de lo que quiero lograr.

Julio 13, 2018, 11:18:18 AM #2 Ultima modificación: Julio 13, 2018, 11:19:03 AM por pioj
@#Patow, te he activado la cuenta. Preséntate en el foro adecuado, pls, que todavía no lo has hecho desde que entraste...

hola, el raton se mueve con el brazo... o mas bien con la mano... la derecha en mi caso... XD
 
tienes varias formas de saver donde esta el mouse.... porejemplo mousePosition, luego le restas la mitad de tu screen size... y te dara la posicion del raton respecto del centro de la pantalla... y luego usas "aTan2" para conseguir el angulo.... y le mueves el brazo a tu muñeco en ese angulo...
 

vector3 mousePos = Input.mousePosition; //posicion del raton
mousePos -= new Vector3(Screen.width, Screen.height, 0); //posicion respecto al centro
float angle = Mathf.Atan2(mousePos.x, -mousePos.y); //angulo que forma

 
 
 
otra cosa, te aconsejo que te presentes devidamente en la seccion correspondiente para cumplir las normas del foro...
 
que aqui tenemos un addministrador que no dudara en contratar un sicario si es necesario...

Ya me presentaré disculpen. 
 
 
 
Cita de: Igor date=1531479583hola, el raton se mueve con el brazo... o mas bien con la mano... la derecha en mi caso... XD
   
   
      tienes varias formas de saver donde esta el mouse.... porejemplo mousePosition, luego le restas la mitad de tu screen size... y te dara la posicion del raton respecto del centro de la pantalla... y luego usas "aTan2" para conseguir el angulo.... y le mueves el brazo a tu muñeco en ese angulo...
   
   

vector3 mousePos = Input.mousePosition; //posicion del raton
mousePos -= new Vector3(Screen.width, Screen.height, 0); //posicion respecto al centro
float angle = Mathf.Atan2(mousePos.x, -mousePos.y); //angulo que forma

   
       
   
   
      otra cosa, te aconsejo que te presentes devidamente en la seccion correspondiente para cumplir las normas del foro...
   
   
      que aqui tenemos un addministrador que no dudara en contratar un sicario si es necesario...
   


Respecto a esto, tengo que hacer que el gameobjet del brazo haga lo que le pido. Suponiendo que el gameobjet se llamará jd_brazo, como hago que el mismo tome esas posiciones, intentaré ahora hacerlo por mi cuenta también por si me sale, gracias.

Otra duda, quiero rotar un jugador 2d, visto desde arriba. Que el mismo rote en dirección al mouse. Si alguien me puede pasar un script, gracias.

Cita de: #Patow date=1531939151Otra duda, quiero rotar un jugador 2d, visto desde arriba. Que el mismo rote en dirección al mouse. Si alguien me puede pasar un script, gracias.
   


using UnityEngine;
 using System.Collections;
 
 public class rotateToMouse : MonoBehaviour {
 
 
 
     // Update is called once per frame
     void Update ()
     {
         Vector2 mouse = Camera.main.ScreenToViewportPoint(Input.mousePosition);        //Mouse position
         Vector3 objpos = Camera.main.WorldToViewportPoint (transform.position);        //Object position on screen
         Vector2 relobjpos = new Vector2(objpos.x - 0.5f,objpos.y - 0.5f);            //Set coordinates relative to object
         Vector2 relmousepos = new Vector2 (mouse.x - 0.5f,mouse.y - 0.5f) - relobjpos;
         float angle = Vector2.Angle (Vector2.up, relmousepos);    //Angle calculation
         if (relmousepos.x > 0)
             angle = 360-angle;
         Quaternion quat = Quaternion.identity;
         quat.eulerAngles = new Vector3(0,0,angle); //Changing angle
         transform.rotation = quat;
     }
 }

 
 
 
 

Cita de: Jocyf date=1532045341

using UnityEngine;
 using System.Collections;
 
 public class rotateToMouse : MonoBehaviour {
 
 
 
     // Update is called once per frame
     void Update ()
     {
         Vector2 mouse = Camera.main.ScreenToViewportPoint(Input.mousePosition);        //Mouse position
         Vector3 objpos = Camera.main.WorldToViewportPoint (transform.position);        //Object position on screen
         Vector2 relobjpos = new Vector2(objpos.x - 0.5f,objpos.y - 0.5f);            //Set coordinates relative to object
         Vector2 relmousepos = new Vector2 (mouse.x - 0.5f,mouse.y - 0.5f) - relobjpos;
         float angle = Vector2.Angle (Vector2.up, relmousepos);    //Angle calculation
         if (relmousepos.x > 0)
             angle = 360-angle;
         Quaternion quat = Quaternion.identity;
         quat.eulerAngles = new Vector3(0,0,angle); //Changing angle
         transform.rotation = quat;
     }
 }

   
       
   
   
       
   


Muchas gracias Jocyf!! 

Etiquetas: