Header
Unity 2D [E4] - Transizione effetto bounce su sprite o testo
in: Gaming  So/Code: Generico Data: 04/01/2017
Ora: 10.56:41
Articolo visualizzato: 366 volte

In questo piccolo script illustro come creare un piccolo effetto bounce parametrizzabile applicabile su qualsiasi game object, che quindi può contenere qualsiasi risorsa. Si basa su 2 fasi una di transizione e l'altra di bounce. Ovviamente è ampiamente modificabile. La parametrizzazione è importante al fine di trovare il risultato desiderato. 

Vi lascio al codice commentato.

 

// Use this for initialization
protected override void Start ()
{
	startPosition = gameObject.transform.position;	

	// parametri:
	// bounceDecrementalPercentage percentuale di spostamento in base alla distanza percorsa dalla transizione alla destination
	// bounceDecrementalConstantPercentage percentuale decrementale della bounceDecrementalPercentage ad ogni bounce
	// totalBounceTime tempo totale dell'effetto transizione + bounce
	// transitionTimePercentage percentuale del totalBounceTime dedicato alla transazione
	// bounceTimePercentage percentuale del totalBounceTime dedicato al bounce
	// destinationPosition position di destinazione
	// startPosition position iniziale
	StartCoroutine (BounceEffect(20f,2f,1.5f,30f,70f,destinationObject.transform.position,startPosition));
}

}

private IEnumerator MoveToPosition (Vector3 destinationPosition, Vector3 startPosition, float duration)
{
	float elapsedTime = 0f;
	while (elapsedTime < duration) {
		float fracComplete = elapsedTime / duration;

		transform.position = Vector3.Lerp (startPosition, destinationPosition, fracComplete);
		elapsedTime += Time.deltaTime;

		yield return null;
	}

	transform.position = Vector3.Lerp (startPosition, destinationPosition, 1);
}

private IEnumerator BounceEffect (float bounceDecrementalPercentage, float bounceDecrementalConstantPercentage, float totalBounceTime, float transitionTimePercentage, float bounceTimePercentage, Vector3 destinationPosition, Vector3 startPosition)
{
	// calcolo il tempo di entrata e i tempi di bounce
	float singleTimeUnitForPercentage = totalBounceTime / 100f; 

	// tempo di transazione moltiplicando la unit per 40% diamo il peso del 40% del totale alla transazione
	float transitionTime = singleTimeUnitForPercentage * transitionTimePercentage;

	// alla destinazione
	yield return StartCoroutine (MoveToPosition(destinationPosition, startPosition, transitionTime));

	// start il bounce
	float destinationDistance = Vector2.Distance (startPosition, destinationObject.transform.position);


	// calcolo le unità di tempo del bounce e il valore decrementale
	float timetodel = 0;
	float timeminuscomplete = (singleTimeUnitForPercentage * bounceTimePercentage) / (bounceDecrementalPercentage / bounceDecrementalConstantPercentage);

	// set bool
	bool isMinus = true;
	bool isFinish = false;

	// set for first bounce
	timetodel = timeminuscomplete;

	// bounce while
	while (!isFinish) {

		if (isMinus) {
			destinationPosition.x = destinationObject.transform.position.x - ((destinationDistance / 100f) * bounceDecrementalPercentage);
			yield return StartCoroutine (MoveToPosition(destinationPosition,gameObject.transform.position,timeminuscomplete));
			bounceDecrementalPercentage = bounceDecrementalPercentage - bounceDecrementalConstantPercentage;
			timetodel = timetodel + timeminuscomplete;
			isMinus = false;
		} else {
			destinationPosition.x = destinationObject.transform.position.x + ((destinationDistance / 100f) * bounceDecrementalPercentage);
			yield return StartCoroutine (MoveToPosition(destinationPosition,gameObject.transform.position,timeminuscomplete));
			bounceDecrementalPercentage = bounceDecrementalPercentage - bounceDecrementalConstantPercentage;
			timetodel = timetodel + timeminuscomplete;
			isMinus = true;
		}

		if (bounceDecrementalPercentage <= 0f)
			isFinish = true;

		yield return null;
	}

}

Commenti Commenti (0) | User Autore: Guido Camerlingo (Guiz)
Tags:  unity 2D videogame bounce effetto transizione transition effect buonce rimbalzo





Articoli Correlati
Unity 2D [E4] - Transizione effetto bounce su sprite o testo
Unity 2D [E4] - Transition bounce effect of sprite or text
Unity 2D [E2] - Applicare ad una sprite l'effetto vibrazione / terremoto
Unity 2D [E1] - Detecting Collisions
Unity 2D [ E2 ] - Apply the effect vibration / earthquake to a sprite

Commenti

Scrivi Commento
Codice Verifica

Commento massimo 5000 caratteri.(Tutti i campi contrassegnati da * sono obbligatori).

   

Ricerca

Glossario Naviga nel nostro glossario!
Scopri il gergo dei Geek!


 ULTIMI ARTICOLI


 Giochi in uscita oggi

Nessuna uscita prevista


 [EN] Last Articles

 Siti Amici

Visita il Blog Roll
Contattaci! Diventa nostro amico!



 Amazon


 Hot Downloads

3552

 Categorie

79
163
57
87
13
2
20
36
1
2
5
5
128
7
24
14
57
45

 Code

11
11
3
5
23
1
7

 Games

19
45
13

 GUIDE


 Novità Downloads

61
35
3552

 Tags Cloud

justice HTC rockstar justice anonymous megaupload SDK android screenshot anonymous ios francia fbi optrasparenza alternative recensione apple Trophy Htc



 CopyRight

Valid XHTML 1.0 Transitional CSS Valido! [Valid RSS] Creative Commons License


Geek-Blog by Flavio Mandato, Giuseppe Vaccaro, Guido Camerlingo, Stefano Natale, Domenico Cavallo is licensed under a Creative Commons Attribuzione-Non opere derivate 2.5 Italia License.
Based on a work at www.geek-blog.it.
Permissions beyond the scope of this license may be available at http://www.geek-blog.it/

Disclaimer - Responsabilità - Pagina generata in 0.123 secondi. Geek-Blog.it