1 of 74

TEMA D’ANNO IN �TECNOLOGIE PER LA BIOINGEGNERIA / SISTEMI RIABILITATIVI AVANZATI

Analisi dei segnali EMG relativi ai movimenti della mano in un paziente affetto da Parkinson e valutazione quantitativa della bradicinesia.

Realizzazione di un Serious Game riabilitativo.

Docenti:

Prof. Ing. Vitoantonio BEVILACQUA, Ph.D.�Prof. Ing. Domenico BUONGIORNO, Ph.D.

Studentesse:

Chiara Bungaro

Alessandra Algieri

Dipartimento di Ingegneria Elettrica e dell’Informazione

�CORSO DI LAUREA MAGISTRALE IN INGEGNERIA DEI SISTEMI MEDICALI

Politecnico di Bari

Anno Accademico 2020/2021

2 of 74

Parkinson’s Disease

  • Il Parkinson è una malattia neurodegenerativa, ad evoluzione lenta ma progressiva, che coinvolge, principalmente, alcune funzioni quali il controllo dei movimenti e dell'equilibrio.
  • L'età media di esordio è intorno ai 58-60 anni, ma circa il 5 % dei pazienti può presentare un esordio giovanile tra i 21 ed i 40 anni.
  • Le strutture coinvolte nella malattia di Parkinson si trovano in aree profonde del cervello, note come gangli della base (nuclei caudato, putamen e pallido), che partecipano alla corretta esecuzione dei movimenti. La malattia di Parkinson si manifesta quando la produzione di dopamina nel cervello cala consistentemente a causa della degenerazione di neuroni in un'area chiamata Substantia Nigra.

​

3 of 74

Parkinson’s Disease

4 of 74

Parkinson’s Disease

  • I principali sintomi motori della malattia di Parkinson sono:
    • il tremore a riposo;
    • la rigidità;
    • la bradicinesia (lentezza dei movimenti automatici);
    • in una fase più avanzata, l'instabilità posturale (perdita di equilibrio).

5 of 74

Aim Of The Project

  • In questo studio viene proposto un approccio per la valutazione quantitativa dei movimenti di braccio e mano in pazienti affetti da malattia di Parkinson (PD), a partire dai dati acquisiti dai sensori del Myo armband (dispositivo wireless indossabile).
  • Per la caratterizzazione di tali movimenti, sono stati introdotti scores specifici noti come Movement Performance Indicators (MPI).
  • Gli MPI hanno lo scopo di supportare la diagnosi e la valutazione clinica dei sintomi motori. In particolare, alcuni di essi possono indicare la presenza del sintomo di bradicinesia e della rigidità muscolare.

​

6 of 74

Aim Of The Project

  • Nello studio sono stati coinvolti due soggetti: un paziente di 87 anni affetto da Parkinson e un controllo di età corrispondente.
  • Dopo aver acquisito i segnali provenienti da accelerometro, giroscopio e sensori EMG propri del Myo per entrambi i soggetti, sono stati estratti gli MPI.
  • Con i suddetti dati sono stati successivamente addestrati e testati diversi classificatori multiclasse (per il riconoscimento dei gesti) e binari (per discriminare tra soggetto sano e malato).
  • Infine, è stato utilizzato Unity 3D per realizzare un gioco riabilitativo tridimensionale basato sui cinque gesti della mano riconosciuti dal Myo.

7 of 74

Tools

8 of 74

Myo Armband

  • Il Myo armband è un dispositivo indossabile sviluppato dall'azienda Thalamic Labs che riconosce i gesti delle mani in tempo reale utilizzando otto sensori EMG di superficie in configurazione bipolare posizionati sull'avambraccio e un'unità di misura inerziale (IMU) contenente un accelerometro, un giroscopio e un magnetometro, ciascuno a tre assi.
  • Durante l'esecuzione di una gesture, i muscoli dell'avambraccio si contraggono e, misurando i segnali emessi delle varie fibre muscolari, è possibile identificare la gesture effettuata.
  • Il dispositivo è connesso al computer tramite Bluetooth 4.0 Low Energy.

9 of 74

Myo Armband - EMG

  • Una gesture non è altro che un movimento eseguito con le mani, e dal punto di vista fisiologico corrisponde ad una serie di contrazioni di alcuni gruppi muscolari. Poiché i sensori utilizzati da Myo sono di tipo Surface EMG, essi restituiscono un segnale che corrisponde alla somma dei contributi di tutte le fibre muscolari nelle vicinanze del sensore, variando in ampiezza in relazione all'intensità dello stimolo. I segnali ottenuti dipendono fortemente dal collocamento dei sensori e da altre variabili come la sudorazione (che altera la conduttività elettrica della pelle), l'affaticamento, e la forza muscolare.

​

10 of 74

Myo Armband - IMU

  • I segnali inerziali provengono da dispositivi denominati Inertial Measurement Unit (IMU), che sono dotati di un accelerometro, un giroscopio, e talvolta un magnetometro.

​

11 of 74

Myo Armband

  • Durante le acquisizioni, il Myo è stato posizionato nello stesso modo su entrambi i soggetti. Per la mano destra, i canali 3, 4 e 5 sono stati collocati sulla parte superiore dell'avambraccio (muscoli estensori), i canali 7, 8 e 1 sull'avambraccio inferiore (muscoli flessori), il canale 2 sui muscoli esterni dell'avambraccio, mentre il canale 6 sui muscoli interni dell'avambraccio.

12 of 74

Myo Armband

  • Per poter connettere il Myo con un computer devono essere installati il software Myo Connect e il Myo SDK 0.9.0.
  • Una volta posizionato sull’avambraccio, inoltre, il dispositivo potrebbe aver bisogno di riscaldarsi per alcuni minuti prima di poter funzionare correttamente.
  • Myo SDK contiene una libreria, libmyo, che consente ad applicazioni con diversi linguaggi di programmazione di interagire con il Myo Armband.
  • Per acquisire i segnali è stato utilizzato il pacchetto Myo SDK MATLAB MEX Wrapper, che contiene una classe m-code semplificata, MyoMex. Quest’ultima consente agli utenti MATLAB di trasmettere dati da uno o due dispositivi Myo a 50Hz (IMU) e 200Hz (EMG).

13 of 74

Experimental Protocol

  • Il protocollo sperimentale prevede quattro gesti da eseguire con la mano destra:
  • Rotation of the Hand with Elbow Extended (RH-EE)
  • Rotation of the Hand with Elbow Fixed (RH-EF)
  • Object Grasping, Pick and Place in the case of Easy Load (GPP-EL)
  • Object Grasping, Pick and Place in the case of Heavy Load (GPP-HL)

​

​

​

​

​

1

3

4

2

14 of 74

Experimental Protocol

  • Per ogni soggetto, sono state effettuate due acquisizioni per ciascun gesto.
  • Entrambe le acquisizioni prevedevano la ripetizione del gesto per 12 volte.
  • Tuttavia, nella prima l’esecuzione del gesto è stata guidata affinché quest’ultimo venisse ripetuto ogni 5 secondi.
  • Nella seconda, invece, i soggetti hanno eseguito le ripetizioni senza alcun vincolo di tempo.

15 of 74

RH-EE

16 of 74

RH-EF

17 of 74

GPP-EL

18 of 74

GPP-HL

19 of 74

Signal Processing

  • I segnali EMG sono stati acquisiti con una frequenza di campionamento di 200 Hz mentre i segnali provenienti dall’IMU sono stati campionati a 50 Hz.
  • Per poter estrarre l’inviluppo, tutti i segnali EMG sono stati rettificati e filtrati con un filtro passa-basso di Butterworth del 4° ordine con frequenza di cutoff pari a 5 Hz.
  • L’estrazione delle feature necessarie alla successiva implementazione di classificatori è avvenuta, invece, a partire dai segnali grezzi (sia EMG che IMU).
  • Il metodo adottato per il processing dei segnali è stato il window approach.

​

20 of 74

Raw EMG Signals

Raw RH-EE EMG Patient

Raw RH-EE EMG Control

21 of 74

Signal Rectification

  • Rettificare il segnale significa calcolarne il valore assoluto, convertendo tutte le ampiezze negative in positive.

​

RH-EE EMG Patient rettificato

RH-EE EMG Control rettificato

22 of 74

Signal Filtering

  • L’utilizzo di un filtro passa-basso di Butterworth permette di eliminare il rumore del segnale acquisito alle alte frequenze ed estrarre, successivamente, l’envelope.

​

RH-EE EMG Patient Butterworth LPF 4° order 5 Hz

RH-EE EMG Control Butterworth LPF 4° order 5 Hz

23 of 74

Envelope

  • L'inviluppo lineare (smoothing) del segnale permette di regolarizzarlo, evidenziandone l'andamento. Esso fornisce informazioni sul reclutamento muscolare e risulta utile per trovare la posizione ed il valore dei picchi di attivazione.

RH-EE EMG Patient Envelope

RH-EE EMG Control Envelope

24 of 74

IMU Signals

  • I segnali provenienti dall'IMU sono più puliti e possono essere utilizzati senza alcun tipo di filtraggio.

RH-EE ACCEL Patient

RH-EE ACCEL Control

25 of 74

IMU Signals

RH-EE GYRO Patient

RH-EE GYRO Control

26 of 74

Window Approach

  • La lunghezza delle finestre è stata fissata pari a 200 ms per i segnali EMG e a 800 ms per i segnali provenienti da accelerometro e giroscopio.
  • La lunghezza del segmento di overlap è stata scelta pari al 25% della dimensione della finestra, quindi 50 ms per i segnali EMG e 200 ms per i segnali di accelerometro e giroscopio.

​

  • Questo metodo implica la segmentazione temporale del segnale in finestre scorrevoli e il calcolo del particolare valore degli MPI per ciascuna finestra.
  • Il vantaggio principale di quest’analisi è la possibilità di caratterizzare l'evoluzione temporale degli MPI durante il movimento.

27 of 74

Movement Performance Indicators - EMG

  •  

 

 

28 of 74

Movement Performance Indicators – ACC/GYRO

  •  

 

 

29 of 74

Frequency Domain

  • Lo spettro del segnale EMG va da circa 10 Hz fino a 450 Hz e la componente significativa del segnale è localizzata tra 10 e 250 Hz. Pertanto, la frequenza di acquisizione del segnale dovrebbe essere pari ad almeno 1000 Hz.
  • I sensori EMG di Myo, tuttavia, hanno una frequenza di campionamento di 200 Hz. Ciò significa che, secondo il teorema del campionamento di Nyquist-Shannon, la massima frequenza estraibile in modo affidabile dal segnale è pari a 100 Hz.
  • Questo determina una perdita di contenuto informativo nel dominio della frequenza. Pertanto, l'unica caratteristica del segnale utilizzabile per il riconoscimento delle gesture è rappresentata dall'ampiezza nel dominio del tempo.

30 of 74

PD Patient vs Control

  • Per poter implementare opportuni classificatori binari, è stata prima di tutto realizzata una feature matrix nel seguente modo:
    • per ogni gesto di entrambi i soggetti sono state concatenate orizzontalmente le matrici relative a ciascuna feature (aventi numero di colonne pari al numero di canali corrispondente, ovvero 8 per segnali EMG e 3 per segnali IMU);
    • le matrici ottenute sono state, a loro volta, concatenate verticalmente in questo ordine:
    • rh_ee_feature_matrix
    • rh_ef_feature_matrix
    • gpp_el_feature_matrix
    • gpp_hl_feature_matrix

​

​

​

      • rh_ee_feature_matrix_control
      • rh_ef_feature_matrix_control
      • gpp_el_feature_matrix_control
      • gpp_hl_feature_matrix_control

​

31 of 74

PD Patient vs Control

​

​

​

​

​

​

​

​

​

PD

RH EE

Ch 1

…

Ch 8

Ch 1

…

Ch 8

Ch 1

…

Ch 8

Ch 1

…

Ch 3

Ch 1

…

Ch 3

Ch 1

…

Ch 3

Ch 1

…

Ch 3

RH EF

GPP EL

GPP HL

CONTROL

RH EE

Ch 1

…

Ch 8

Ch 1

…

Ch 8

Ch 1

…

Ch 8

Ch 1

…

Ch 3

Ch 1

…

Ch 3

Ch 1

…

Ch 3

Ch 1

…

Ch 3

RH EF

GPP EL

GPP HL

32 of 74

Optimal Workflow

Feature Matrix

(5 folds)

Training Set

(4 folds)

Test Set

(1 fold)

Feature Selection

(Inner CV)

Selected Features

Feature

Indices

Model Parameteres

(Inner CV)

Apply Optimal Model

Model

Parameters

Average Results

Cross validation

33 of 74

Decision Tree

  • MaxNumSplits = 5
  • 10 feature selezionate con NCA

​

MEAN AUC

​

VARIANCE OF AUC

​

MEAN ACCURACY

​

0.8928

​

0.0054

​

86.06%

​

34 of 74

K-nearest neighbors (KNN)

  • k = 9
  • Distanza euclidea
  • 11 feature selezionate con NCA

​

MEAN AUC

​

VARIANCE OF AUC

​

MEAN ACCURACY

​

0.9366

​

0.0065

​

87.92%

​

35 of 74

Artificial Neural Network (ANN)

  • 2 Hidden Layer, ciascuno con 4 neuroni
  • 500 epoche
  • 9 feature selezionate con LDA

​

MEAN AUC

​

VARIANCE OF AUC

​

MEAN ACCURACY

​

0.9997

​

1.2243e-07

​

99.28%

​

36 of 74

Support Vector Machine (SVM)

  • RBF kernel
  • 9 feature selezionate con LDA

​

MEAN AUC

​

VARIANCE OF AUC

​

MEAN ACCURACY

​

0.9998

​

6.7459e-08

​

99.34%

​

37 of 74

Support Vector Machine (SVM)

38 of 74

Support Vector Machine (SVM)

k = 1

k = 2

k = 3

39 of 74

Support Vector Machine (SVM)

k = 4

k = 5

40 of 74

Selected MPIs

  • Per quanto riguarda il classificatore SVM, è stato utilizzato l’algoritmo di Linear Discriminant Analysis per selezionare gli MPI (ovvero le feature) più rilevanti per il processo di decision making tra paziente e controllo. Le feature maggiormente discriminanti, utili per un eventuale supporto alla diagnosi, sono risultate essere le seguenti:
    • EMG-MAV relativi ai canali: 1, 2, 5, 7
    • EMG-VAR relativi ai canali: 1, 2, 5, 7, 8

​

41 of 74

Quantitative Assessment of Bradykinesia Symptom

  • Le due caratteristiche principali della bradicinesia sono la lentezza dei movimenti e la progressiva diminuzione dell'ampiezza di movimenti sequenziali (sequence effect).
  • La figura mostra l'evoluzione temporale dell'EMG-MAV di tutti gli 8 canali, per entrambi i soggetti, durante il movimento GPP-HL. In particolare, il paziente ha eseguito movimenti più lenti e più ampi rispetto al controllo.
  • La maggior ampiezza dell’EMG-MAV nel paziente è legata all’aumento involontario del tono muscolare, provocato dalla rigidità che caratterizza i movimenti di pazienti con PD.

42 of 74

Quantitative Assessment of Bradykinesia Symptom

  • La bradicinesia è riscontrabile anche dall'evoluzione temporale delle feature estratte dai dati di accelerometro e giroscopio. La figura mostra l’andamento nel tempo del GYRO-RAN, per paziente e controllo, durante il movimento RH-EF. Il risultato è lo stesso del caso dei dati EMG.

43 of 74

Quantitative Assessment of Bradykinesia Symptom

La decrescita dell’EMG-MAV e dell’EMG-VAR nel tempo è lenta ma costante, dimostrando la presenza di bradicinesia.

EMG-MAV (GPP-HL) channel 3

EMG-VAR (GPP-HL) channel 3

44 of 74

Quantitative Assessment of Bradykinesia Symptom

Il sequence effect proprio della bradicinesia è confermato dall’andamento di GYRO-SSI e ACCEL-SSI per i diversi gesti (GPP-EL in questo caso).

ACCEL-SSI (GPP-EL) channel 1

GYRO-SSI (GPP-EL) channel 3

45 of 74

Hand Gesture Recognition

  • Per poter implementare opportuni classificatori multi-classe, è stata prima di tutto realizzata una feature matrix nel seguente modo:
    • per ogni gesto sono state concatenate orizzontalmente le matrici relative a ciascuna feature (aventi numero di colonne pari al numero di canali corrispondente, ovvero 8 per segnali EMG e 3 per segnali IMU);
    • le matrici ottenute sono state, a loro volta, concatenate verticalmente in questo ordine:
      • rh_ee_feature_matrix
      • rh_ef_feature_matrix
      • gpp_el_feature_matrix
      • gpp_hl_feature_matrix

​

​

46 of 74

Hand Gesture Recognition

​

​

​

​

​

​

​

​

RH EE

Ch 1

…

Ch 8

Ch 1

…

Ch 8

Ch 1

…

Ch 8

Ch 1

…

Ch 3

Ch 1

…

Ch 3

Ch 1

…

Ch 3

Ch 1

…

Ch 3

RH EF

Ch 1

…

Ch 8

Ch 1

…

Ch 8

Ch 1

…

Ch 8

Ch 1

…

Ch 3

Ch 1

…

Ch 3

Ch 1

…

Ch 3

Ch 1

…

Ch 3

GPP EL

Ch 1

…

Ch 8

Ch 1

…

Ch 8

Ch 1

…

Ch 8

Ch 1

…

Ch 3

Ch 1

…

Ch 3

Ch 1

…

Ch 3

Ch 1

…

Ch 3

GPP HL

Ch 1

…

Ch 8

Ch 1

…

Ch 8

Ch 1

…

Ch 8

Ch 1

…

Ch 3

Ch 1

…

Ch 3

Ch 1

…

Ch 3

Ch 1

…

Ch 3

47 of 74

Support Vector Machine (SVM)

  • RBF kernel
  • 9 feature selezionate con LDA

​

RH EE

RH EF

GPP EL

GPP HL

MEAN AUC

​

0.9600

0.9352

0.9568

0.9426

VARIANCE OF AUC

5.6968e-05

2.9794e-04

1.1943e-04

8.4498e-05

MEAN ACCURACY

82.16%

48 of 74

Decision Tree

  • MaxNumSplits = 10
  • 22 feature selezionate con LDA

​

RH EE

RH EF

GPP EL

GPP HL

MEAN AUC

​

0.9536

0.9267

0.9620

0.9529

VARIANCE OF AUC

5.3476e-05

3.7448e-04

1.5792e-04

2.4802e-04

MEAN ACCURACY

86.04%

49 of 74

K-nearest neighbors (KNN)

  • k = 10
  • Distanza euclidea
  • 25 feature selezionate con LDA

​

RH EE

RH EF

GPP EL

GPP HL

MEAN AUC

​

0.8788

0.9625

0.9701

0.8474

VARIANCE OF AUC

6.7602e-04

2.1760e-05

1.1525e-04

5.2148e-04

MEAN ACCURACY

86.92%

50 of 74

Artificial Neural Network (ANN)

  • 2 Hidden Layer, ciascuno con 20 neuroni
  • 1000 epoche
  • 21 feature selezionate con LDA

​

RH EE

RH EF

GPP EL

GPP HL

MEAN AUC

​

0.9893

0.9856

0.9836

0.9786

VARIANCE OF AUC

1.5516e-05

2.1210e-05

3.2532e-05

7.9936e-05

MEAN ACCURACY

89.38%

51 of 74

Artificial Neural Network (ANN)

k = 3

k = 2

k = 1

52 of 74

Artificial Neural Network (ANN)

k = 4

k = 5

53 of 74

Artificial Neural Network (ANN)

k = 1

k = 2

k = 3

54 of 74

Artificial Neural Network (ANN)

k = 4

k = 5

55 of 74

Selected MPIs

  • Per quanto riguarda il classificatore ANN, è stato utilizzato l’algoritmo di Linear Discriminant Analysis per selezionare gli MPI (ovvero le feature) più rilevanti per il riconoscimento delle gesture. Le feature maggiormente discriminanti sono risultate essere le seguenti:
    • EMG-MAV relativi ai canali: 2, 4, 5, 6, 7, 8
    • EMG-VAR relativi ai canali: 1, 2, 3, 4, 5, 6, 7, 8
    • EMG-WC relativi ai canali: 2, 3, 6, 7
    • ACCEL- RAN relativi ai canali: 1, 2, 3

​

56 of 74

Rehabilitation for Parkinson's disease

  • Nei pazienti affetti da PD, la riabilitazione mira principalmente a contrastare il circolo vizioso causato dalla rigidità muscolare (contrattura-dolore-contrattura). Una corretta terapia riabilitativa impedirà che i dolori blocchino ulteriormente le articolazioni.
  • Nelle fasi iniziali della malattia, in particolare, la riabilitazione dovrà:
    • migliorare le escursioni articolari dei pazienti, ovvero il range di movimento delle loro articolazioni;
    • combattere la perdita degli automatismi, cercando di far eseguire volontariamente al paziente dei movimenti andati perduti per migliorare la motricità volontaria e per contrastare la tendenza al “blocco” che caratterizza le fasi successive, anche attraverso l’accentuazione del movimento volontario.

​

57 of 74

Serious Games in Rehabilitation

  • Il processo riabilitativo dovrebbe essere user-friendly e motivare i pazienti nell’eseguire il particolare task motorio. L’introduzione di meccanismi di scoring durante gli esercizi può contribuire al raggiungimento di obiettivi specifici durante il percorso riabilitativo.
  • I serious games sono giochi con una forte componente interattiva, che stimolano l’attenzione in modo continuativo attraverso l’utilizzo di frequenti feedback con l’obiettivo primario di attivare processi di apprendimento.
  • I serious games sono stati applicati con successo nella riabilitazione cognitiva post ictus, nelle malattie neurodegenerative e in fase di prevenzione del declino cognitivo nell’invecchiamento fisiologico.

58 of 74

  • Nel presente lavoro, è stato utilizzato Unity per creare un gioco tridimensionale basato sui movimenti della mano. Nel gioco proposto, sono stati selezionati 5 gesti della mano per controllare una sfera e permetterle di superare diversi ostacoli (andando avanti, indietro, saltando, rendendo la sfera più grande) fino al termine del percorso.
  • L'obiettivo finale del gioco è superare tutti gli ostacoli, raccogliendo il maggior numero di monete lungo il percorso, e far cadere la palla in un canestro.

​

3D game for Rehabilitation Therapies

59 of 74

3D game for Rehabilitation Therapies

Wave Out – Andare avanti

Fist – Tornare indietro

Double Tap – Saltare

Spread – Ingrandire

Rest

60 of 74

Thalmic Labs and Unity3D

  • Nel progetto ci sono 2 GameObject fondamentali:
    • Il primo è Hub - 1 Myo e funziona come connessione tra Unity3D e Myo Connect. Deve avere associato uno script ThalmicHub.cs.
    • Il secondo è Myo, il rappresentante dell’armband. Deve avere associato uno script ThalmicMyo.cs. Il Myo GameObject dovrebbe essere annidato sotto l'hub (il cosiddetto parenting nell’ambiente Unity3D).

61 of 74

Thalmic Labs and Unity3D

  • Gli script nella cartella Myo/Scripts/Myo.NET forniscono dei binding per l’armband, memorizzati nel namespace Thalmic.Myo.
  • Lo script Pose.cs dichiara un’enumerazione (la posa rilevata da Myo) che definisce i valori dei relativi membri. Qualsiasi disturbo nel segnale produce il risultato Unknown. Una posa non riconosciuta da Myo viene associata a Rest. Questa enumerazione trae i suoi dati da libmyo.PoseType, dove a ciascuna posa viene assegnato un numero intero eccetto Unknown, che ha il valore esadecimale di 0xffff (cui viene associato -1, risultato di errore).

public enum PoseType

{

Rest = 0,

Fist = 1,

WaveIn = 2,

WaveOut = 3,

FingersSpread = 4,

DoubleTap = 5,

Unknown = 0xffff

}

62 of 74

Player

  • La sfera è rappresentata da un GameObject chiamato Player, cui sono associati un componente Rigidbody e lo script Player.cs.
  • Il metodo Start() della classe Player viene eseguito una sola volta all’inizio della scena. In questo caso, viene utilizzato per associare ad una variabile il Rigidbody, inizializzare un contatore e chiamare la funzione SetCountText().

63 of 74

Player

  • Il metodo FixedUpdate() viene chiamato subito prima di fare i calcoli relativi al motore fisico ed è stato utilizzato per effettuare operazioni che riguardano la fisica, come applicare forze al componente Rigidbody. In particolare:
    • Wave Out: la sfera viene spinta in avanti;
    • Fist: la sfera viene spinta indietro;
    • Finger Spread: le dimensioni della sfera aumentano;
    • Rest: la sfera torna alle dimensioni originali;
    • Double Tap: la sfera è spinta verso l’alto.

​

​

64 of 74

Player

65 of 74

Main Camera

  • Lo script CameraController.cs consente alla MainCamera di muoversi in maniera solidale al Player nel corso del gioco.
  • Nel metodo Start() viene definito l’offset come differenza tra la posizione della camera e quella del Player.
  • Il metodo LateUpdate() viene chiamato dopo che tutte le funzioni Update() sono state chiamate e aggiorna la posizione della camera, permettendole di seguire l’oggetto che si sposta nella scena.

66 of 74

Gold Coin Prefab

  • Lungo il percorso sono presenti delle monete, oggetti collezionabili dalla sfera e che rappresentano istanze di un Prefab.
  • Ad ogni istanza del Prefab è stato, inoltre, associato il tag GoldCoin.
  • Le monete sono dei trigger, ovvero oggetti non tangibili di cui è comunque possibile rilevare le collisioni.

67 of 74

Gold Coin Prefab

  • La funzione OnTriggerEnter() permette di disabilitare un GameObject GoldCoin ogni qualvolta collide con la sfera, utilizzando il metodo SetActive(). Contestualmente, incrementa il contatore e chiama la funzione SetCountText().
  • Lo script Rotator.cs è associato al Prefab GoldCoin e determina la rotazione continua delle monete intorno all’asse y durante il gioco.

​

68 of 74

Gold Coin Prefab

69 of 74

Count Text

  • Dopo aver installato il plugin TextMesh Pro dall’Asset Store di Unity, è stato creato un oggetto CounText modificabile via script.
  • La funzione SetCountText() permette di aggiornare il numero di monete visualizzato a schermo durante il gioco ogni volta che il contatore viene incrementato.

70 of 74

Stick Prefab

  • Per ostacolare il movimento della sfera, in un tratto del percorso sono presenti degli Stick, istanze di un Prefab cui è associato un Rigidbody.
  • Avendo messo il flag sul parametro UseGravity, gli oggetti Stick cadono al momento della collisione con la sfera.

71 of 74

Game Over

  • Il gioco termina quando la sfera raggiunge il canestro.
  • La funzione OnCollisionEnter(), definita nello script Player.cs, viene chiamata quando la sfera tocca il piano del canestro, cui è associato il tag PianoFinale.
  • Non appena la collisione si verifica, viene visualizzato a schermo il contenuto dell’oggetto GameOverText (un messaggio di congratulazioni). Inoltre, viene abilitato il GameObject della classe Restart utilizzando il metodo SetActive().

​

72 of 74

Restart

  • Il GameObject Restart è un bottone cui sono associati il testo REPLAY e lo script Restart.cs.
  • Il metodo ClickRestart() permette di distruggere l’oggetto rappresentativo del Myo Armband in Unity e di resettare la scena.
  • Pertanto, premendo il bottone, l’utente potrà giocare nuovamente.

​

73 of 74

Play Mode

74 of 74

Grazie per l’attenzione