Ricerca…


Lettura della chiave Stampa e differenza tra GetKey, GetKeyDown e GetKeyUp

L'input deve essere letto dalla funzione di aggiornamento.

Riferimento per tutti i codici di accesso disponibili.

1. Leggere il tasto premere con Input.GetKey :

Input.GetKey restituirà ripetutamente true mentre l'utente tiene premuto il tasto specificato. Questo può essere usato per sparare ripetutamente un'arma tenendo premuto il tasto specificato. Di seguito è riportato un esempio di attivazione automatica dei proiettili quando viene tenuto premuto il tasto Spazio. Il giocatore non deve premere e rilasciare il tasto più e più volte.

public GameObject bulletPrefab;
public float shootForce = 50f;

void Update()
{
    if (Input.GetKey(KeyCode.Space))
    {
        Debug.Log("Shooting a bullet while SpaceBar is held down");

        //Instantiate bullet
        GameObject bullet = Instantiate(bulletPrefab, transform.position, transform.rotation) as GameObject;

        //Get the Rigidbody from the bullet then add a force to the bullet
        bullet.GetComponent<Rigidbody>().AddForce(bullet.transform.forward * shootForce);
    }
}

2. Premere la pressione del tasto con Input.GetKeyDown :

Input.GetKeyDown sarà true solo una volta quando viene premuto il tasto specificato. Questa è la differenza chiave tra Input.GetKey e Input.GetKeyDown . Un esempio di utilizzo del suo utilizzo è l'attivazione / disattivazione di un'interfaccia utente o di una torcia elettrica o di un elemento.

public Light flashLight;
bool enableFlashLight = false;

void Update()
{
    if (Input.GetKeyDown(KeyCode.Space))
    {
        //Toggle Light 
        enableFlashLight = !enableFlashLight;
        if (enableFlashLight)
        {
            flashLight.enabled = true;
            Debug.Log("Light Enabled!");
        }
        else
        {
            flashLight.enabled = false;
            Debug.Log("Light Disabled!");
        }
    }
}

3. Premere la pressione del tasto con Input.GetKeyUp :

Questo è l'esatto opposto di Input.GetKeyDown . È usato per rilevare quando il tasto-pressione viene rilasciato / sollevato. Proprio come Input.GetKeyDown , restituisce true solo una volta . Ad esempio, è possibile enable luce quando si tiene premuto il tasto con Input.GetKeyDown quindi disabilitare la luce quando viene rilasciato il tasto con Input.GetKeyUp .

public Light flashLight;
void Update()
{
    //Disable Light when Space Key is pressed
    if (Input.GetKeyDown(KeyCode.Space))
    {
        flashLight.enabled = true;
        Debug.Log("Light Enabled!");
    }

    //Disable Light when Space Key is released
    if (Input.GetKeyUp(KeyCode.Space))
    {
        flashLight.enabled = false;
        Debug.Log("Light Disabled!");
    }
}

Leggi sensore accelerometro (base)

Input.acceleration viene utilizzato per leggere il sensore dell'accelerometro. Restituisce Vector3 come risultato che contiene i valori dell'asse x , y e z nello spazio 3D.

void Update()
{
    Vector3 acclerometerValue = rawAccelValue();
    Debug.Log("X: " + acclerometerValue.x + "  Y: " + acclerometerValue.y + "  Z: " + acclerometerValue.z);
}

Vector3 rawAccelValue()
{
    return Input.acceleration;
}

Leggi sensore accelerometro (Advance)

L'uso di valori grezzi direttamente dal sensore dell'accelerometro per spostare o ruotare un oggetto GameObject può causare problemi quali movimenti a scatti o vibrazioni. Si consiglia di appianare i valori prima di utilizzarli. In effetti, i valori dal sensore dell'accelerometro dovrebbero essere sempre livellati prima dell'uso. Questo può essere ottenuto con un filtro passa-basso ed è qui che Vector3.Lerp entra in azione.

//The lower this value, the less smooth the value is and faster Accel is updated. 30 seems fine for this
const float updateSpeed = 30.0f;

float AccelerometerUpdateInterval = 1.0f / updateSpeed;
float LowPassKernelWidthInSeconds = 1.0f;
float LowPassFilterFactor = 0;
Vector3 lowPassValue = Vector3.zero;

void Start()
{
    //Filter Accelerometer
    LowPassFilterFactor = AccelerometerUpdateInterval / LowPassKernelWidthInSeconds;
    lowPassValue = Input.acceleration;
}

void Update()
{

    //Get Raw Accelerometer values (pass in false to get raw Accelerometer values)
    Vector3 rawAccelValue = filterAccelValue(false);
    Debug.Log("RAW X: " + rawAccelValue.x + "  Y: " + rawAccelValue.y + "  Z: " + rawAccelValue.z);

    //Get smoothed Accelerometer values (pass in true to get Filtered Accelerometer values)
    Vector3 filteredAccelValue = filterAccelValue(true);
    Debug.Log("FILTERED X: " + filteredAccelValue.x + "  Y: " + filteredAccelValue.y + "  Z: " + filteredAccelValue.z);
}

//Filter Accelerometer
Vector3 filterAccelValue(bool smooth)
{
    if (smooth)
        lowPassValue = Vector3.Lerp(lowPassValue, Input.acceleration, LowPassFilterFactor);
    else
        lowPassValue = Input.acceleration;

    return lowPassValue;
}

Leggi sensore accelerometro (precisione)

Leggere l'accelerometro Sensore con precisione.

Questo esempio alloca la memoria:

void Update()
{
    //Get Precise Accelerometer values 
    Vector3 accelValue = preciseAccelValue();
    Debug.Log("PRECISE X: " + accelValue.x + "  Y: " + accelValue.y + "  Z: " + accelValue.z);

}

Vector3 preciseAccelValue()
{
    Vector3 accelResult = Vector3.zero;
    foreach (AccelerationEvent tempAccelEvent in Input.accelerationEvents)
    {
        accelResult = accelResult + (tempAccelEvent.acceleration * tempAccelEvent.deltaTime);
    }
    return accelResult;
}

Questo esempio non alloca la memoria:

void Update()
{
    //Get Precise Accelerometer values 
    Vector3 accelValue = preciseAccelValue();
    Debug.Log("PRECISE X: " + accelValue.x + "  Y: " + accelValue.y + "  Z: " + accelValue.z);

}

Vector3 preciseAccelValue()
{
    Vector3 accelResult = Vector3.zero;
    for (int i = 0; i < Input.accelerationEventCount; ++i)
    {
        AccelerationEvent tempAccelEvent = Input.GetAccelerationEvent(i);
        accelResult = accelResult + (tempAccelEvent.acceleration * tempAccelEvent.deltaTime);
    }
    return accelResult;
}

Si noti che questo non è filtrato. Si prega di guardare qui per come regolare i valori dell'accelerometro per rimuovere il rumore.

Leggi il pulsante del mouse (sinistra, metà, destra) Clic

Queste funzioni sono utilizzate per controllare i clic del pulsante del mouse.

  • Input.GetMouseButton(int button);
  • Input.GetMouseButtonDown(int button);
  • Input.GetMouseButtonUp(int button);

Prendono tutti lo stesso parametro.

  • 0 = Clic del mouse sinistro.
  • 1 = tasto destro del mouse.
  • 2 = clic del mouse centrale.

GetMouseButton viene utilizzato per rilevare quando il pulsante del mouse viene tenuto premuto continuamente . Restituisce true mentre il pulsante del mouse specificato viene tenuto premuto.

void Update()
{
    if (Input.GetMouseButton(0))
    {
        Debug.Log("Left Mouse Button Down");
    }

    if (Input.GetMouseButton(1))
    {
        Debug.Log("Right Mouse Button Down");
    }

    if (Input.GetMouseButton(2))
    {
        Debug.Log("Middle Mouse Button Down");
    }
}

GetMouseButtonDown viene utilizzato per rilevare quando c'è il clic del mouse. Restituisce true se viene premuto una volta . Non ritorna più true fino a quando il pulsante del mouse non viene rilasciato e premuto di nuovo.

void Update()
{
    if (Input.GetMouseButtonDown(0))
    {
        Debug.Log("Left Mouse Button Clicked");
    }

    if (Input.GetMouseButtonDown(1))
    {
        Debug.Log("Right Mouse Button Clicked");
    }

    if (Input.GetMouseButtonDown(2))
    {
        Debug.Log("Middle Mouse Button Clicked");
    }
}

GetMouseButtonUp viene utilizzato per rilevare quando viene rilasciato il pulsante del mouse specificato. Questo è restituito solo true una volta rilasciato il pulsante del mouse specificato. Per tornare di nuovo vero, deve essere premuto e rilasciato di nuovo.

void Update()
{
    if (Input.GetMouseButtonUp(0))
    {
        Debug.Log("Left Mouse Button Released");
    }

    if (Input.GetMouseButtonUp(1))
    {
        Debug.Log("Right Mouse Button Released");
    }

    if (Input.GetMouseButtonUp(2))
    {
        Debug.Log("Middle Mouse Button Released");
    }
}


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow