

MamurrAR+
Applicazionemobileperl’AreaprotettadiGianolaedelMontediScauri
Tesidi:
Dott.BiancaGagliardi
Matricolan.293860
Relatore:
CristinaBarbiani
AnnoAccademico2019/2020




Indice
1.Ilcontesto
2.Ilprogetto
a.Concept
b.Progettogra!co
c.SviluppoUnity
3.Sviluppifuturi

1.Ilcontesto
All’estremo sud del Lazio, il Parco Regionale SuburbanodiGianolaeMontediScauriècollocato sullalinguacostieracheseparaiMontiAuruncidal maredelGolfodiGaetaerappresentaunodeipochi lembiverdidiunterritoriofortementeantropizzato.
Gliambientinaturaliconsentieriimmersinellafolta vegetazioneaccolgonoepreservanonumerosiresti diepocaromanasegnodiunintensaattivitàumana cheincessantementesiprotraeda2000anni, no aigiorninostri.
All’internodelParcoèinserital’AreaArcheologica della Villa di Mamurra, con le sue strutture parzialmentevisibiliattualmenteinfasediscavoe reastauro.











AreaArcheologicadellaVilladiMamurra
L’Area Archeologica della Villa di Mamurra comprende numerose strutture murarie attualmenteinteressatedastudiericostruzioni.
La lettura e ricostruzione visiva della dimora originaria e la destinazione d’uso di ogni edi!cio risultanodidifficilecomprensioneinquantolagran partediessièancoraprotettadalterreno.
Gliedi!ciprincipalisono:
1-Porticciolo
2-Cisternagrande
3-Galleriainterrata
4-GrottadellaJanara
5-Cisternadelle36colonne
6-Edi!cioottagonale











2.Ilprogetto
a.il concept
Il progetto di tesi propone lo sviluppo di una applicazione che sia di supporto ai visitatori permettendo la prenotazione della visita e la personalizzazionedeipercorsi.
Attualmente il Parco non è dotato app e le visite avvengonoliberamentemasenzaunasegnalazione deicontenutilungoipercorsi.
I percorsi principali sono 3 e sono segnalati in modalitàtradizionale:
-SentierodiMamurra
-SentierodiPortoCofaniello
-Sentierodelcrinale
Lo sviluppo è avvenuto per Android ma è implementabileancheperiOS.
SiipotizzaladistribuzionesuentrambigliStore.





DallaschermatadiHomesaràpossibilesceglierelalingua.
Laschermatasuccessivadaràlapossibilitàdiaccedereallostoricodelleprenotazionieallenuoveprenotazioni.
Grazie all’inserimento del tempo a disposizione del visitatore e alla scelta dei punti di interesse da visitare, ogni sentiero sarà personalizzatoepotràesserediversoadognivisita.












Unavoltapersonalizzatoilpercorsosaràpossibilesalvarloeaccederviinqualsiasimomento.
Ilvisitatorechevorràiniziarelavisitapotràseguuireilpropriopercorsodirettamentenell’appevisualizzareipuntidiinteressenele vicinanze.






Inognimomentodellavisita,ilvisitatorepotràvisualizzarelenormedelParcoinmateriadisicurezza.




c.losviluppoinUnity
Lo sviluppo dell’app è avvenuto su Unity in ambiente dedicato ad AndroideildebugèavvenutosuundeviceAndroidperveri carne l’effettivofunzionamento.

c.losviluppoinUnity
ATTIVAZIONEBOTTONIONCLICK
usingSystem.Collections; usingSystem.Collections.Generic; usingUnityEngine; usingUnityEngine.SceneManagement;
publicclassButtonManager:MonoBehaviour{ publicvoidNewGameBtn(stringnewGameLevel)
{ SceneManager.LoadScene(newGameLevel);
APERTURASOCIALONCLICK
usingSystem.Collections; usingSystem.Collections.Generic; usingUnityEngine; usingUnityEngine.SceneManagement; publicclassAppOpener:MonoBehaviour { AsyncOperationasync; publicboolmIsAppLeft; voidOnApplicatioFocus(boolhasFocus)
{ mIsAppLeft=!hasFocus; } voidOnApplicatioPause(boolpauseStatus)
{ mIsAppLeft=pauseStatus;
} publicvoidFacebook()
{ StartCoroutine(OpenFacebook());
}
IEnumeratorOpenFacebook()
{ Application.OpenURL(“https://m.facebook.com/parcorivieradiulisse”); yieldreturnnewWaitForSeconds(1f); if(mIsAppLeft)
mIsAppLeft=false; else
}
Application.OpenURL(“https://m.facebook.com/parcorivieradiulisse”);
publicvoidInstagram()
{ StartCoroutine(OpenInstagram());
}
IEnumeratorOpenInstagram()
{ Application.OpenURL(“https://instagram.com/parcorivieradiulisse?utm_medium=copy_link”); yieldreturnnewWaitForSeconds(1f); if(mIsAppLeft)
mIsAppLeft=false; else
Application.OpenURL(“https://instagram.com/parcorivieradiulisse?utm_medium=copy_ link”);
} publicvoidYoutube()
{ StartCoroutine(OpenYoutube());
} IEnumeratorOpenYoutube()
{ Application.OpenURL(“https://www.youtube.com/user/parcorivieradiulisse”); yieldreturnnewWaitForSeconds(1f); if(mIsAppLeft)
mIsAppLeft=false; else
Application.OpenURL(“https://www.youtube.com/user/parcorivieradiulisse”);
} publicvoidTwitter()
{ StartCoroutine(OpenTwitter());
} IEnumeratorOpenTwitter()
{ Application.OpenURL(“https://twitter.com/RivieraDiUlisse?s=20”); yieldreturnnewWaitForSeconds(1f); if(mIsAppLeft)
mIsAppLeft=false; else
Application.OpenURL(“https://twitter.com/RivieraDiUlisse?s=20”);
} publicvoidSite()
{ StartCoroutine(OpenSite()); } IEnumeratorOpenSite()
{ Application.OpenURL(“https://www.parchilazio.it/rivieradiulisse”); yieldreturnnewWaitForSeconds(1f); if(mIsAppLeft)
mIsAppLeft=false; else
Application.OpenURL(“https://www.parchilazio.it/rivieradiulisse”); } }
c.losviluppoinUnity
SWIPEMENUNORMEDELPARCO
usingSystem.Collections; usingSystem.Collections.Generic; usingUnityEngine; usingUnityEngine.UI; publicclassswipe_menu:MonoBehaviour
using using classswipe_menu:MonoBehaviour
{ publicGameObjectscrollbar; !oatscroll_pos=0; !oat[]pos;
//Usethisforinitialization voidStart()
{ } //Updateiscalledonceperframe voidUpdate()
{ pos=new!oat[transform.childCount]; !oatdistance=1f/(pos.Length-1f); for(inti=0;i<pos.Length;i++)
{ pos[i]=distance*i;
} if(Input.GetMouseButton(0))
{ scroll_pos=scrollbar.GetComponent<Scrollbar>().value; } else
{ for(inti=0;i<pos.Length;i++)
!oat =0; pos; Usethisforinitialization void iscalledonceperframe void pos=new !oatdistance=1ffor i=0;i< =distance*i; if scroll_pos= for i=0;i< if < + &&scroll_pos>=
{ if(scroll_pos<pos[i]+(distance/2)&&scroll_pos>pos[i]-(distance/2))
{ scrollbar.GetComponent<Scrollbar>().value=Mathf.Lerp(scrollbar.GetComponent<Scrollbar>().value,pos[i],0); } } }
for(inti=0;i<pos.Length;i++)
{ if(scroll_pos<pos[i]+(distance/2)&&scroll_pos>pos[i]-(distance/2))
{ transform.GetChild(i).localScale=Vector2.Lerp(transform. GetChild(i).localScale,newVector2(2,2),0.1f); for(inta=0;a<pos.Length;a++)
{ transform.GetChild(a).localScale=Vector2.Lerp(transform. GetChild(a).localScale,newVector2(0.3f,0.3f),0.1f); { } } } } } }