Header
Unity 2D [E2] - Applicare ad una sprite l'effetto vibrazione / terremoto
in: Utility  So/Code: Generico Data: 06/04/2016
Ora: 11.20:08
Articolo visualizzato: 978 volte

L'effetto di shake, vibrazione o terremoto è facilmente implementabile utilizzando alcuni metodi come Random.insideUnitCircle che genera randomicamente un punto in un cerchio di raggio 1.

Risulta quindi facilmente applicabile ad una sprite soprattutto in ambiente 2D. Considerando la generazione di un punto randomico in un cerchio, avente cento coordinate 0x, 0y possiamo facilmente applicare una forza per moltiplicare la "potenza" quindi il raggio d'azione.

Supponiamo di aver ottenuto un punto random "Random Point 1" di coordinate (esempio) -0.5x e -0.6y a cui applicheremo una costante, che chiameremo forza dello shake ma in sostanza è un aumento del raggio per esempio forza 2.

Quindi avremo una nuova posizione(ambiente 2d) con coordinate:

Vector3.x = random.x * forza
Vector3.y = random.y * forza
Vector3.z = z_originale

Detto ciò possiamo creare uno script che attivi e disattivi lo shake, vibrazione o terremoto che dir si voglia, dove viene parametrizzato il parametro forza come input. Questo script è applicabile alla sprite sulla quale si vuole agire.

 

 

using UnityEngine;
using System.Collections;

public class ShakeEffect : MonoBehaviour {

	// vars
	private bool shakeOn = false;
	private float shakePower = 0;

	// sprite original position
	private Vector3 originPosition;

	// Use this for initialization
	void Start () {

	}

	// Update is called once per frame
	void Update () {

		// if shake is enabled
		if(shakeOn) {
			
			// reset original position
			transform.position = originPosition;

			// generate random position in a 1 unit circle and add power
			Vector2 ShakePos = Random.insideUnitCircle * shakePower;

			// transform to new position adding the new coordinates
			transform.position = new Vector3 (transform.position.x + ShakePos.x, transform.position.y + ShakePos.y, transform.position.z); 
		}
	}

	// shake on
	public void ShakeCameraOn(float sPower){

		//save position before start shake, 
		//this it's really important otherwise 
		//the sprite can goes away and will not return 
		//in native position
		originPosition = transform.position;

		//enable shaking and setting power
		shakeOn = true;
		shakePower = sPower;
	}

	// shake off
	public void ShakeCameraOff(){

		// shake off
		shakeOn = false;

		// set original position after 
		transform.position = originPosition;
	}

}

Per qualsiasi dubbi o domande commentate.

Commenti Commenti (0) | User Autore: Guido Camerlingo (Guiz)
Tags: unity 2D videogame effect shake vibrazione effetto terremoto earthquake sprite move position random





Articoli Correlati
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
Unity 2D [E1] - Gestire le collisioni
Unity 2D [E4] - Transition bounce effect of sprite or text

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

3597

 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
38
3597

 Tags Cloud

virus evento novità ios4 OS 3gs giroscopio nuovo contro shuffle 2010 vulnerabilità Randi novità facetime itunes retina virus



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