Jump to content
Sign in to follow this  
MotoSierraProducciones

Problema con Input Button

Recommended Posts

Hola, tengo un problema que no he podido solucionar.

Necesito que pueda "Dejar pulsado un boton" en Android

if (Input.GetKeyDown(KeyCode.H))
{
  transform.Rotate(new Vectoe3 (0, 15 * Time.Deltatime, 0));
}

Ese codigo es para hacer las pruebas sin tener que hacer un Build.

Como Puedo pasar eso a un Button  UI??

 

Si pulso el Button, solo lo hace 1 vez, necesito que realice la accion mientras se pulsa el Button y que al soltarlo deje de hacerlo!

 

A quien responda Muchas gracias por su respuesta

Share this post


Link to post
Share on other sites

Hola, se me ocurren dos formas:

1. Usando un evento de Unity.  En cada botón tenés eventos disponibles, pero solamente on click (presionar primero, luego al soltar se dispara el evento). Podés implementar algunas interfaces útiles para estos casos como las "IPointerXXXXX". Vas a tener que implementar dos, IPointerUpHandler e IPointerDownHandler.

En donde querés usar el estado del botón (usé el componente "Target", en tu caso será el que tenga que ser):

class Target : Monobehaviour
{

bool pulsado = false;

public void Pulsar( bool pulsado )
{
      this.pulsado = pulsado;
}

//...

}

Donde esté el elemento UI, agregás este componente (lo llamé "UIButton"):

//...
using UnityEngine.EventSystems; //<---

public class UIButton : MonoBehaviour , IPointerUpHandler , IPointerDownHandler
{
    public Target target;

    public void OnPointerDown(PointerEventData eventData)
    {
        if( target == null )
             return;
		
		target.Pulsar( true );
    }

    public void OnPointerUp(PointerEventData eventData)
    {
        if( target == null )
             return;
		
		target.Pulsar( false );      
    }
}

También lo podés hacer desde el inspector, con un evento público creo.

2. La otra forma es simular un input directamente usando el nuevo input system. Para esto vas a tener que instalar el paquete del InputSystem, crear las acciones correspondientes con sus bindings (conexión entre accion y dispositivo de entrada), y agregar donde tengas el elemento UI un componente que basicamente simula uno de estos bindings (perdón no me acuerdo su nombre). Luego en tu "Target" usas el estado de esta acción. Puede sonar a mucho de golpe, si estás familiarizado con el nuevo input system debería ser fácil.

Edited by lightbug
  • Like 2

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

UnitySpain © Todos los derechos reservados 2020
×
×
  • Create New...