Noticias

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

AYUDA CON ESTE SCRIPT

Iniciado por CarlosMartin1, Noviembre 29, 2015, 03:20:45 PM

Tema anterior - Siguiente tema
Hola buenas necesito ayuda con este script 
if (Input.GetKey(KeyCode.UpArrow))
        {
            if (Input.GetKey(KeyCode.UpArrow))
            {
                Debug.Log("Segunda animacion");
            }
            else
            {
                Debug.Log("Primera animacion");
            }        }
Quiero que al pulsar una vez el boton up se imprima primera animacion y se pulso mas de una vez se imprima segunda animacion pero no se que pasa que siempre se imprime segunda animacion alguien que me pueda ayudar????

Buenas,Te recomiendo leer un poco las bases de la programación para poder pensar con más lógica y saber como funciona esto.Entra en "Segunda animación", porque la condición es la misma que en el primer "if".Para hacer lo que comentas hay que hacer mas cosas.Tendrías que tener una variable bool, por ejemplo, que se ponga a "true" al pulsar la tecla, y después, si la bool es true, ya podrías comprobar si se ha pulsado mas veces.Esto explicado de la forma mas sencilla, porque si no tienes conocimientos básicos, puedes frustrarte bastante. Te resumo en unos puntos las cosas que habría que tener en cuenta para hacerlo bien.(se puede hacer de multiples formas, claro está)- El máximo tiempo que está permitido para detectar si se ha pulsado mas de una vez.- Almacenar el tiempo de la primera pulsación y comparar con el tiempo actual para reiniciar el sistema o no- Tener una variable tipo enum, que contenga el estado de ese "proceso" digamos, para poder comprobar en cada punto del código y realizar lo correspondiente.- Una vez pulsada la tecla, comprobar si no se ha pulsado antes (comprobando el enum) y en tal caso, asignar al enum el valor de "PrimeraPulsada" (por ejemplo) Al final la programación son tareas muy pequeñas que se unen para crear tareas mas grandes.Por lo tanto, lo mejor es dividir tu problema en problemas mas pequeños. Pero para ello, necesitas saber analizar y conocer los tipos de datos existentes. En definitiva, tener herramientas o recursos para resolver tus problemas.Por el foro puedes encontrar aportes de usuarios para comenzar con la programacion etc.Espero que te sea de ayuda.Un saludo.

Muchas gracias por el aporte pero quiero decir una cosa es verdad que ese script no es de saber mucho programar pero las bases de la programacion las llevo pero bueno entiendo perfectamente todo lo que has dicho pero mi duda mi gran dolor de cabeza que no me sale que he probado mil formas distintas y no hay manera de que se ejecute una animacion pulsando varias veces una tecla. He creado un animator Controller y he puesto dos estados que son dos animaciones diferentes y he puesto una variable bool y cuando se pulsa la tecla pasa a true y cambia de transicion pero cuando vuelvo a pulsar pues no se ejecuta esa animacion varias veces. Si no necesitara ayuda no la pediria pero bueno muchas gracias.Un saludo.

Utiliza Time.DeltaTime y un boleano, debería serte suficiente si tienes las bases de programacion xD 

Algo a sin te puede servir
using System.Collections;
using UnityEngine;

public class ces : MonoBehaviour
{
    float ClickTiempo = 0;
    float Tiempo=.25f;

    void Update()
    {
       
        dobleclick();
    }

    void dobleclick()

    {

        if (Input.GetKeyDown(KeyCode.UpArrow))
        {
            if (Time.time - ClickTiempo < Tiempo)
            {
                //doble click
                Debug.Log("Segundo:" + (Time.time - ClickTiempo).ToString());
            }
            else
            {
                //normal click
                Debug.Log("Primero:" + (Time.time - ClickTiempo).ToString());
            }
            ClickTiempo = Time.time;
        }
    }
}
 

Etiquetas: