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: 640 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

3617

 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
39
3617

 Tags Cloud

utilizzare nintendo personalizzati uk process uk HTC 3 poker 3ds process rockstar auto calcio bootloader smartphone bloccherà debug gta csharp



 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.131 secondi. Geek-Blog.it