Unity Spain

Post Antiguos => General (Antiguo) => Mensaje iniciado por: gonzilla en Julio 18, 2016, 10:25:39 PM

Título: Rotar objeto 90 grados por teclas
Publicado por: gonzilla en Julio 18, 2016, 10:25:39 PM
Buenas. Tengo este script y aunque he tratado de configurarlo para que rote 90 grados cada vez que se teclea la tecla correspondiente, no logro poner los valores que sirvan. Lo coloco tal como funciona pues lo demas seria disparate (igual no soy programador pero creanme que lo he intentado). Agradezco cualquier ayuda.
 

var speed = 30;
function Update () {
if (Input.GetKey(KeyCode.T))
transform.Rotate(Vector3.up* speed *Time.deltaTime );
if (Input.GetKey(KeyCode.R))
transform.Rotate(-Vector3.up* speed *Time.deltaTime );
}

 
 
Título: Rotar objeto 90 grados por teclas
Publicado por: allnnde en Julio 20, 2016, 04:32:15 PM
pasa algo cuando presionas los botones? aunque sea cambiar los valores en el impector? puede ser que no este entrando en los if tambien
Título: Rotar objeto 90 grados por teclas
Publicado por: esr en Julio 20, 2016, 11:39:03 PM
Lo que te estara pasando es que rotara sin control mientras tienes la tecla pulsada, para que no te pase eso utiliza Input.GetKeyDown. Te pongo un ejemplo con tu codigo:
 
 
 

// grados que se va a rotar //
var angle = 90;
function Update () {
// si se ha pulsado la tecla T //
if (Input.GetKeyDown(KeyCode.T))
// gira en el eje de las "y" 90 grados
transform.Rotate(Vector3.up, angle)
if (Input.GetKeyDown(KeyCode.R))
transform.Rotate(Vector3.up, angle * (-1))
}

 
 
 
Mira a ver si te sirve y cualquier duda dimelo.
Título: Rotar objeto 90 grados por teclas
Publicado por: DavidCC en Julio 22, 2016, 12:59:18 AM
Podrias probar con InputManager.
 
 
Título: Rotar objeto 90 grados por teclas
Publicado por: gonzilla en Julio 22, 2016, 03:37:41 PM
Lo que hice fue modificarlo un poco pero no funciona. Probe con Input.GetKeyDown y nada. No se que le falta. habia pensado en el input manager , quiza sea por ahi...
 
 
 

//grados que se va a rotar//
var angle = 90;
function Update ()    {
// si se ha pulsado la tecla T//
if (Input.GetKey("R"));
// gira en el eje Y 90 grados//
transform.Rotate(Vector3.up,angle);
if (Input.GetKey("T"));
transform.Rotate(Vector3.up,angle * (-1));
}

 
 
Título: Rotar objeto 90 grados por teclas
Publicado por: DavidCC en Julio 23, 2016, 12:36:33 AM
(https://docs.unity3d.com/uploads/Main/InputSetAll.png)
 
El InputManager tiene los ejes Horizontal y Vertical, los cuales funcionan (o emulan) como analogicos si mal no equivoco.
 
Puedes uar estos ejes para rotar y con Math.Clamp limitar la rotación.
Título: Rotar objeto 90 grados por teclas
Publicado por: Jose134 en Julio 23, 2016, 01:39:59 PM
Cita de: gonzilla date=1468873539Buenas. Tengo este script y aunque he tratado de configurarlo para que rote 90 grados cada vez que se teclea la tecla correspondiente, no logro poner los valores que sirvan. Lo coloco tal como funciona pues lo demas seria disparate (igual no soy programador pero creanme que lo he intentado). Agradezco cualquier ayuda.
   
   

var speed = 30;
function Update () {
if (Input.GetKey(KeyCode.T))
transform.Rotate(Vector3.up* speed *Time.deltaTime );
if (Input.GetKey(KeyCode.R))
transform.Rotate(-Vector3.up* speed *Time.deltaTime );
}

   
       
   


1. tienes que usar Input.GetKeyDown en vez de Input.GetKey porque si no lo que este dentro del if se ejecutara MIENTRAS la tecla este pulsada y no solo cuando se pulse
 
2. transform.Rotate no es lo mas adecuado para lo que quieres lograr (se puede usar pero es mas complicado, al menos en mii opinion)
 
 
 
creo que lo mas optimo seria esto
 

private var euler : Vector3;
public var angle : float = 90;
function Update () {
    if (Input.GetKeyDown(KeyCode.T)) {
       euler = transform.rotation.eulerAngles;
         transform.rotation = Quaternion.Euler(euler + Vector3.up * angle);
    }
     else if (Input.GetKeyDown(KeyCode.R)) {
       euler = transform.rotation.eulerAngles;
         transform.rotation = Quaternion.Euler(euler + Vector3.down * angle);
    }
}

 
 
Título: Rotar objeto 90 grados por teclas
Publicado por: gonzilla en Julio 30, 2016, 07:04:08 PM
Excelente!! Quiza se pueda suavizar un poco pero hace lo que buscaba. Gracias a todos.