Unity 3D spostare view da gameobject a gameobject

Stato
Discussione chiusa ad ulteriori risposte.

Renevas

Utente Bronze
24 Dicembre 2016
6
2
0
24
Dunque premetto che sono alle prime armi con lo scripting, vado ancora avanti a guide, tutorial e valanghe di tentativi.

Allora in parole povere ho un numero "x" di GameObject sulla scena e ho bisogno di inquadrarli uno alla volta. Supponendo di aver un "transform.LookAt(...);" agganciato alla mainCamera l'idea sarebbe quella di avere un comando per "switchare" la vista da un oggetto all'altro (magari in seguito impostando anche un criterio in base al quale la view passa da uno ad un altro, per ora mi accontento di un metodo lineare).

Sono in cerca di idee e spunti su come poter organizzare e impostare il codice.
 
Ciao, il lookat funziona solo se vuoi che la telecamera si giri verso l'oggetto, se invece vuoi che si muova la devi spostare la camera alla posizione dell'oggetto a cui aggiungi un offset su uno degli assi per tenerla lontana dalla oggetto.
 
Ciao, il lookat funziona solo se vuoi che la telecamera si giri verso l'oggetto, se invece vuoi che si muova la devi spostare la camera alla posizione dell'oggetto a cui aggiungi un offset su uno degli assi per tenerla lontana dalla oggetto.
a me va benissimo che la camera inquadri e basta l'oggetto, il problema è che vorrei fargli cambiare il target da guardare tramite un imput.
 
a me va benissimo che la camera inquadri e basta l'oggetto, il problema è che vorrei fargli cambiare il target da guardare tramite un imput.
Allora puoi usare il raycast che parte dalla telecamera e punta al click del mouse per trovare quale oggetto il giocatore vuole vedere e agire di conseguenza. Nota gli oggetti devo avere un collider per essere trovato dal raycast
 
ok, pero ho ancora qualche dubbio sulla messa in pratica. Gli oggetti interessati come li gestisco? come li posso "contrassegnarli" come target? ho provato con i tag ma non ho ottenuto risultati, poi ho letto che ci sono strumenti come gli array e le list per gestire gruppi di oggetti, ma anche in tal caso mi è poco chiara la faccenda.

l'idea sarebbe di avere sulla scena un numero x di gameobject... do l'input e la camera ne inquadra uno, do un altra volta l'imput e la camera ne inquadra un altro, e così via...
 
La cosa più facile da fare e usare il raycast. Le liste e/o gli array non tu servono in questo caso perché sarebbero ram extra occupata per nulla. Una lista ha senso do essere usata per cercare ad esempio un oggetto con un certo component o robe dei genere.
Per usare il raycast basta che piazzi gli oggetti nella scena e gli attacchi un collider. Dopodiché via script quando il player clicca l oggetto fai partire il raycast per vedere se trovi qualcosa o no. Per limitare gli oggetti cliccabili puoi usare i layer fisici, cioè crei un layer in cui metti tutti gli oggetti (menu drop a sinistra di quello del tag) e poi usi una layermask con il raycast affinché questo trovi gli oggetti in quel layer e ignori tutti gli altri.
 
La cosa più facile da fare e usare il raycast. Le liste e/o gli array non tu servono in questo caso perché sarebbero ram extra occupata per nulla. Una lista ha senso do essere usata per cercare ad esempio un oggetto con un certo component o robe dei genere.
Per usare il raycast basta che piazzi gli oggetti nella scena e gli attacchi un collider. Dopodiché via script quando il player clicca l oggetto fai partire il raycast per vedere se trovi qualcosa o no. Per limitare gli oggetti cliccabili puoi usare i layer fisici, cioè crei un layer in cui metti tutti gli oggetti (menu drop a sinistra di quello del tag) e poi usi una layermask con il raycast affinché questo trovi gli oggetti in quel layer e ignori tutti gli altri.

ah ok capito! allora guarda grazie, mi documento un po' sui raycast e faccio qualche esperimento!
 
Stato
Discussione chiusa ad ulteriori risposte.