Argomenti di questa pagina :
Opzioni comuni – Python – Elenco dei Sensors
Introduzione
I Sensors sono Logic Bricks che emettono un output diverso a seconda degli eventi che vogliamo accadano all’interno della scena come ad esempio una collisione tra due oggetti, la pressione di un tasto ecc ecc. Quando la condizione di un Sensor è soddisfatta, ovvero accade l’evento, un segnale positivo (True) viene inviato a tutti i Controllers collegati al Sensor.
Opzioni Comuni
Come detto nella pagina dei Logic Bricks, oltre alle opzioni tra Actuators e Sensors, ci sono delle opzioni comuni tra i Sensors stessi.
Nell’immagine puoi notare che dopo la riga spiegata precedentemente ce n’è un’altra con gli stessi pulsanti per tutti i Sensors, sono i parametri che regolano l’invio dell’impulso ai Controllers collegati :
- Il primo pulsante (quello con i tre puntini in alto, true level triggering) è l’invio positivo (True) dell’innesco del nostro Sensor, se questo pulsante è impostato, i Controllers collegati verranno attivati fino a quando lo stato del sensor è positivo. Il Sensor invierà il segnale con un ritardo se impostato (vedi parametro: Freq).
- Il secondo (quello con i tre puntini in basso, false level triggering) è l’opposto del primo, ovvero, se impostato il Sensor invierà un segnale negativo (False) a tutti i Controllers collegati fino a quando lo stato del Sensor è negativo. Il Sensor invierà il segnale con un ritardo se impostato (vedi parametro: Freq).
- Skip (è stata cambiata da Freq frequenza) è il ritardo con cui il segnale viene inviato a tutti i Controllers collegati, viene misurato in FPS (frame per second), il valore di default è 0 e invia il segnale ogni frame, questo può causare un affollamento nell’esecuzione del gioco (quando si hanno parecchi elementi con Logic Bricks); Se impostato a 1 invierà il segnale un frame si e uno no, cioè aspetterà un frame prima di mandare di nuovo il segnale; se impostato a 29 invierà il segnale e poi aspetterà 29 frame prima di inviarne un’altro e così via.
- Il pulsante Level è applicabile solo quando cambia lo State e non è possibile per tutti i Sensors.
- Il pulsante Tap cambia il segnale da positivo a negativo un fotogramma dopo aver inviato il segnale al Controllers, anche se la valutazione del Sensor rimane positiva; se il primo pulsante è impostato (true level triggering) il Sensor si comporta come un interruttore che accende e spegne il segnale fino a quando la valutazione è negativa; quando il secondo pulsante (false level triggering) è selezionato verrà ignorato.
- Il Pulsante Invert semplicemente inverte il senso dell’invio del segnale.
Le opzioni per ogni singolo Sensor sono spiegate nella scheda del Sensor stesso.
Python
E’ possibile gestire le opzioni comuni via script Python, in lettura e scrittura, posto un codice di esempio per spiegare le varie voci
import bge cont = logic.getCurrentController() own = cont.owner sensor = cont.sensors['Always'] # configurazione degli attributi in lettura name = sensor.name #nome del sensor own = sensor.owner #oggetto proprietario true_trigger = sensor.usePosPulseMode # boolean false_trigger = sensor.useNegPulseMode # boolean skip = sensor.skippedTicks # ritorna un'int level = sensor.level #controlla se è premuto, boolean tap = sensor.tap #controlla se è premuto, boolean invert = sensor.invert #controlla se è premuto, boolean # configurazione degli attributi in scrittura sensor.usePosPulseMode = True o False sensor.useNegPulseMode = True o False sensor.skippedTicks = 0 # valore compreso tra 0 e 10000 sensor.level = True o False sensor.tap = True o False sensor.invert = True o False # condizione del sensor positive = sensor.positive #boolean status = sensor.status #int """ ritorna un numero che da 0 a 3 con queste modalità 0 = sensor inattivo 1 = sensor attivato 2 = sensor attivo (invio inpulso) 3 = sensor deattivato """
Dopo le dichiarazioni d’obbligo e del Sensor, in questo caso ho aggiunto un Always perché non ha opzioni specifiche ed è ottimo per questo esempio.
Nella prima parte ‘configurazione degli attributi in lettura’ ho aggiunto le varie funzioni a delle variabili con nomi specifici, il risultato è commentato in linea, spesso ritorna una variabile boolean (True o False), tranne per i nomi del Sensor stesso o del proprietario del Sensor (che è lo stesso del Controller, per intenderci).
Nella seconda parte ‘configurazione degli attributi scrittura’ è possibile settare le proprietà di ogni singola opzione via codice, come vedi sono tutte boolean.
Nella terza parte ‘condizione del Sensor’ tali funzioni ritornano lo stato del sensore :
- Positive ritorna una variabile boolean per segnalare se il Sensor è attivato.
- Status ritorna una variabile int (integer numero intero) con le modalità che ho scritto sullo script.
Per provare lo script in fondo puoi usare la funzione print(variabile, variabile), dove variabile è il nome delle variabili in lettura separate dalla virgola, puoi inserirle tutte.
Mentre per usare le funzioni in scrittura puoi aggiungere un Sensor Keyboard e collegarlo al Controller Python in modo che quando viene premuto cambia l’opzione che vuoi sia cambiata, naturalmente per verificare se è cambiata stampa col print la funzione in lettura.
Queste sono le opzioni comuni via codice Python, fai diverse prove, anche con altri Sensor. Nelle schede dei vari Sensors troverai le opzioni specifiche via Python.
Elenco dei Sensors
clicca su un Sensor per visualizzarne la scheda :