Come posso appianare le animazioni in Scratch? Principalmente, lo desidero in modo tale che quando si preme e si tiene premuta la freccia destra, esso va a destra senza alcun notevole jitter. Inoltre, scratch ti fa aspettare un secondo da ripetere quando tieni una freccia. Come posso lisciare questa roba?Smooth out sprite motion in scratch
risposta
Con Scratch, è possibile ottenere un movimento molto fluido utilizzando Glide
con lunghe distanze o intervalli. Tuttavia, lo svantaggio di questo metodo è che l'operazione Glide deve terminare prima che lo sprite possa eseguire qualsiasi rilevamento, come il rilevamento di bordi o collisioni. Questo è spesso indesiderabile.
Il piccolo ritardo di cui si sta parlando quando si preme un tasto, è in realtà direttamente legato alla frequenza di ripetizione della tastiera. Quando si preme un tasto sulla tastiera, viene inviato quell'evento chiave, ma c'è un leggero ritardo prima che la ripetizione entri in gioco. Se riesci a trovare un modo per modificare la frequenza di ripetizione della tastiera del sistema, questa operazione verrà trasferita in Scratch.
C'è un limite alla quantità di ottimizzazione che è possibile eseguire in Scratch. Dopotutto, è un ambiente di programmazione entry-level molto semplice (ma molto divertente). :)
si potrebbe fare fino a quando "freccia non premuto"
quando freccia premuto ripetizione spostare (o glide) fino a non freccia premuta
allora non controllerà chiave premendo a intervalli prestabiliti, rendendo la mossa più fluida.
So che è una vecchia domanda. Ma nel caso qualcuno cerchi una soluzione, dai un'occhiata a questo progetto: http://scratch.mit.edu/projects/276298/
Basta aggiungere per sempre il ciclo e all'interno di questo ciclo controlla se il tasto freccia è premuto. Se lo è - sposta. In questo modo non si dipenderà dalla frequenza di ripetizione della tastiera.
Si può fare questo:
When flag pressed
forever
if (right arrow pressed?) then
change xs by 1
xs = xs * 0.8
change x by (xs)
che verifica ogni volta se si preme la freccia a destra, e se sì, cambia la variabile xs
di uno. Più tardi, moltiplica xs per 0.8, quindi il valore si riduce in modo visibile.
Quindi modifica la x dello sprite con la variabile xs
.
Un modo per farlo è utilizzare variabili e blocchi personalizzati per creare argomenti per appianare il movimento. Aggiungi una variabile chiamata velocità x e usa una modifica per sempre X alla velocità X. Non ho snapshot o esempi, ma puoi usare gli script nel blocco personalizzato per farla scorrere facilmente.
** AVVISO: errore nel codice! ** Dov'è il ripristino di 'xs'? Il valore di 'xs' passerà molto rapidamente da' 1' a '0.8' a' 0.64' a '0.512' a' 0.4096' ... e supponiamo che inizi a 1! Perché non c'è 'set [xs v] to (numero)', il valore sarà ** mai resettato **! – wizzwizz4
Il codice funziona. Qualsiasi valore di 'xs' diventa esponenzialmente più piccolo quando il tasto freccia destra non viene premuto. Quindi 'xs' si avvicina a zero quando nessun tasto premuto e un valore di 4 (calcolato da 0.8/(1-0.8)) quando si tiene premuto il tasto freccia destra. –