Menu

Move C

Roberto Bobby Riva

using UnityEngine;
using System.Collections;

public class Move : MonoBehaviour {
public GameObject MainCamera;
private bool ISIS;

void Start(){
    ISIS = false;
}

private float i = -10;
private int end = 0; 
void OnMouseDown(){
    ISIS = true;
}
void FixedUpdate () 
{
    if(ISIS)
    {
        if (end == 0) 
        {
            i++;
            if(i>0)
            {
                end=1;
            }
        }
        else if(end==1)
        {
            i++;
            if(i>40)
            {
                end=2;
            }
        }
        else if(end==2)
        {
            i--;
            if(i<0)
            {
                end=3;
            }
        }
        else if(end==3)
        {
            i=0;
            ISIS = false;                                       
        }


        MainCamera.transform.Translate (Vector3.right * Time.deltaTime * i);
        MainCamera.transform.Rotate (Vector3.up * -Time.deltaTime * i , Space.World);
    }

}

}

Si tratta del primo codice sviluppato da 0 per il movimento nel Menù Principale. Il suo scopo è dare l'effetto di rotazione alla camera, che poi si ritroverà con Posizione e Angolazione differenti rispetto alla situazione iniziale (Cioè la visuale sul menù principale).
Il seguente script è stato poi utilizzato anche per il LoadLevel, spiegato successivamente.

Lo script di base gira sulla rotazione e sullo spostamento (transform) della camera:
Prima di tutto lo stato del programma è "Passivo", in attesa di ricevere in Input da mouse; una volta ricevuto l'input, la variabile ISIS (Boolean) scatta a True, facendo partire le operazioni in Update.
Il ciclo in Update (che si ripete a velocità in base al processore) verifica Prima lo stato della variabile end (che indica lo stato di rotazione della camera) e Poi modifica la variabile i (indicatore di velocità di rotazione) in base allo stato. Passati i controlli, la MainCamera subisce la rotazione in base al valore di i, Maggiore sarà, Maggiore sarà la velocità della rotazione.
Alla fine degli stati, lo script esce dal loop.

Gli end, o Stati della camera, rappresentano sia la posizione approssimativa che i limiti di velocità che la camera può raggiungere in rotazione.
Esistono 4 stati:
1° stato: La camera parte da passiva ed ottiene la prima rotazione. Dato che i è impostato di base su -10 partirà con uno scatto in direzione opposta alla direzione iniziale, modifica puramente estetica per "Partire con una Carica". A ogni Update, i viene Incrementato di 1.

2° stato: La camera torna ad uno stato passivo, a velocità i=0. In questo momento la camera entra effettivamente nella rotazione desiderata (i continua ad essere incrementato per ogni Update), effettuando la rotazione nella direzione esatta. Il tutto viene eseguito fino al limite i<40.

3° stato: La camera è al massimo della velocità (Si troverà esattamente a metà strada dal punto di arrivo) ed incomincia a rallentare, decrementado i invece di incrementarlo. L'effetto di rallentamento graduale rende molto gradevole anche l'apparizione del Pianeta X sul background.

4° stato: Ultimo stato della camera, completamente passiva di nuovo. Si esce dal loop dei controlli rendendo la Boolean ISIS nuovamente False ed azzerando le variabili.