Imparare UnityPrincipianti

Gli Standard Assets

Come abbiamo già accennato con la parola asset si intende “materiale di vario genere” ovvero scripts, textures, modelli o persino interi progetti, prefabs, suoni ecc.. già creati da terze persone o da noi stessi.

Unity ci mette a disposizioni molti assets di base, molti dei quali praticamente indispensabili. Essi si dovino in categorie come elementi 2D, tipi di telecamere, effetti grafici e molti altri.

Vediamo per esempio come importare una telecamera che si muova in stile FPS (un controller FPS).
Potremmo anche creare da noi uno script che muova la telecamera in stile FPS, ma visto la mole di lavoro già necessaria per lo sviluppo di un videogioco, non vedo la necessità di “reinventare l’acqua calda” anche perchè gli standard assets di Unity funzionano già molto bene.

Per fare questo dovremmo avere gli Standard Assets installati.
Se non lo avete già fatto, potete trovare gli Standard Assets a questo link.

Se usate una versione più recente di Unity che non vi pemette un corretto uso dell’asset, potete scaricare la versione più aggiornata del Character Package da Git.

Creare un controller FPS

Per controller intendiamo “il controllo”, ovvero l’insieme di una telecamera, un “rigidBody” e dei colliders e tutto ciò che che reagisca agli input del giocatore secondo i canoni degli FPS.

Creare un controller in stile FPS (First Person Shooter) con Unity è una cosa davvero banale.
Basterà usare uno degli Standard Assets di Unity, già programmati ad hoc per noi.

Se avete scaricato l’asset dallo store, dovrete importare lo specifico Standard Asset, andando su:
Asset->Import Pakage->Characters

A questo punto avremo a disposizione due tipi di controller per la prima persona, uno che utilizza un RigidBody e uno senza RigidBody. Li possiamo trovare entrambi nella cartella:
Standard Assets->FirstPersonaCharacter->Prefabs 

Basterà strascinare uno dei due prefab all’interno della scena per poterlo utilizzare sin da subito. Vi consiglio di usare il prefab con il RigidBody, così da avere un effetto di movimento più piacevole e configurabile.
Facile no?

Tenete presente che il prefab in questione possiede già una telecamera come chidren, dunque potremmo cancellare quella precedentemente presente nella nostra scena.

Ora potrete smanettare con decine di opzioni per personalizzare il movimento del vostro personaggio/telecamera.
Ovviamente è il caso di creare anche un piano o un terrain su cui il controller potrà poggiare e delle strutture verticali per testare le collisioni.

Conclusioni finali

Questo veloce esempio è stato necessario solo per capire come importare un qualunque Standard Asset .
In questo caso abbiamo importato una telecamera in stile prima persona, ma potremmo importare moltissimi altri tipi di asset presenti tra gli Standard Assets, a seconda delle vostre esigenze.

NOTA versioni 2018 -> 2020:
Dalla versione 2018 di Unity è stato introdotto il Package Manager, strumento a cui si accede dal menu Window di Unity. Con questo strumento si possono aggiungere una serie di pacchetti ufficiali utili per le più svariate necessità. Eè comunque possibile continuare ad usare i vecchi Standard Asset.

 
 
 

6 pensieri su “Gli Standard Assets

  1. Ciao,
    innanzitutto complimenti per la pazienza e le competenze.
    problema:
    ultima versione di Unity
    Menu: Assets -> Import Packege -> …
    a me esce solo “Custom Packege” anzichè tutte le scelte che compaiono a te (2D, Camera, Characters, ecc)
    Come mai?
    Saluto

    1. Ciao, questo dipende dagli assets che hai scelto di installare ed usare per il tuo progetto. Quando inizi un nuovo progetto c’è un pulsante “Add Asset Package” da cui puoi scegliere quali asset di base vorrai utilizzare. Se anche lì non sono presenti assets vuol dire che non li hai installati nel momento in cui hai installato Unity.
      Dalla versione 2018 trovi il Package Manager, ovvero uno strumento che ti dà la possibilità di scaricare e aggiungere svariati package anche dopo aver iniziato un progetto. Sotto Window->Package Manager.

  2. Intanto complimenti per il grande e minuzioso lavoro, è una guida che dovrebbero mettere a disposizione ufficialmente a tutte le scuole per insegnare le basi di programmazione a partire delle scuole medie in su!
    Un gran bel lavoro

    fino ad ora ho sempre trovato risposta tra i commenti, ma in questo caso mi sto perdendo.
    Quale delle decine di pacchetti include quello da te menzionato…
    sto scaricando a tentativi ma non trovo il package corretto.

    Window->Package Manager.

  3. Grazie delle belle parole Giorgio.
    Il Package Manager è uno strumento a cui si accede dal menu di Unity. Con questo strumento si possono aggiungere una serie di pacchetti ufficiali utili per le più svariate necessità. Questo però esiste dalla versione 2018 in poi.
    Gli standad Assets si possono scaricare anche dall’asset Store di Unity, in modo gratuito, da questo link:
    https://www.assetstore.unity3d.com/en/?stay&_ga=2.1693745.1231054627.1582665261-1907945683.1507668781#!/search/page=1/sortby=popularity/query=category:166
    Essendo pensati per la versione 2017 o precedente, quando saranno installati su una versione più recente di Unity si avvierà un aggiornamento automatico del codice presente nell’asset.
    Esiste comunque una versione del Characters Pakage convertito per Unity 2019 scaricabile da Git a questo indirizzo: https://github.com/Unity-Technologies/Standard-Assets-Characters

  4. Ciao,
    Gran bel corso, finalmente ho trovato l’anello di congiunzione per iniziare a fare qualcosa di autonomo su Unity.
    Ho modificato il BobHead Curve e fatto un po’ di porcherie con la telecamera inclusa nello Standard Asset e ora mi dà il seguente errore:
    transform.localPosition assign attempt for ‘MainCamera’ is not valid. Input localPosition is { NaN, NaN, 0.000000 }.
    UnityEngine.Transform:set_localPosition(Vector3)
    UnityStandardAssets.Characters.FirstPerson.HeadBob:Update() (at Assets/Standard Assets/Characters/FirstPersonCharacter/Scripts/HeadBob.cs:35)
    la riga 35 è questa:
    Camera.transform.localPosition = motionBob.DoHeadBob(rigidbodyFirstPersonController.Velocity.magnitude*(rigidbodyFirstPersonController.Running ? RunningStrideLengthen : 1f));

    Potrei ricaricare, ma preferisco cercare di capire quale sia il problema.
    La posizione NaN su coordinate X ed Y mi fa pensare ad un divide by 0 sulle coordinate. Ma non capisco perché.
    Ho notato che mi dà errore appena provo a muovere il mouse o le le frecce direzionali.
    Inoltre, dovremmmo utilizzare un oggetto 3D root (tipo cubo) per la camera e il rigidbody?

    1. Ciao, susa se rilancio, ma mi pare di capire che la colpa sia nello Stride Interval (default del modello è 4, io lo avevo a 0, ma non ricordo di averlo modificato). Può essere dovuto al fatto che avevo provato a fare un’onda rettangolare nella BobCurve?

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *