[Guida] Effetti particellari avanzati con la matematica - Bukkit

  • Pagine ({1}):
  • 1
  • 2
  • »
--Introduzione--

Se la matematica non è il vostro forte, andatevela a studiare, perché essa, essendo anche alla base di tutti i computer, se sfruttata correttamente, con essa possiamo creare delle gran belle cose!

Di sicuro avete visto i vari effetti particellari nei server più grandi, es. Hy***** e Min***** etc... etc... Ebbene quelli sono frutti di, a volte, complicate equazioni matematiche sapute sfruttare bene!

Ebbene oggi vi insegnerò, almeno lo spero, a ricreare qualcosa di simile (e forse anche più bello Asd Wink.

PREMESSA: l'introduzione serve, anche se potrebbe sembrare lunga è noiosa. E io purtroppo non sono un professore di Fisica/Matematica Asd.

--Le basi:
--Implementare tutte le nostre belle figure in Java e bukkit
Ok ora siamo nella parte divertente, più o meno?
Vi mostrerò come creare due effetti abbastanza carini (SPOILER: una spirale ed una farfalla)

Adesso creiamo un metodo per creare le particelle.
Consiglio di vedere uno degli ultimi tutorial di PogoStick29 per maggiori informazioni sui pacchetti di minecraft.
Codice:
public static void createParticle(EnumParticle particle, Location loc, double x, double y, double z){
PacketPlayOutWorldParticles particles = new PacketPlayOutWorldParticles(particle, true,
((float) (loc.getX() + x)),
((float) (loc.getY() + y)),
((float) (loc.getZ() + z)),
0, 0, 0, 100, 0
);
for(Player p : Bukkit.getOnlinePlayers()){
((CraftPlayer) p).getHandle().playerConnection.sendPacket(particles);
}

Ecco il metodo.

Per creare gli effetti basterà poi grazie ad un comando oppure un evento. Per esempio:

La farfalla sarà un effetto 2D ed è meglio da guardare dall'alto.
Codice:
@EventHandler
public void onSneak(PlayerToggleSneakEvent event){
   double x; double y; //definiamo le varibiali x y
   //ora faremo un for loop che ci servirà per mostrare più particolari e servirà anche per le espressioni.
   for(double t = 0; t <= 10; t += 0.1){
       //qua metteremo le varibili.
       Location loc = event.getPlayer().getEyeLocation();
       x = Math.sin(t)*(Math.pow(Math.E, Math.cos(t))-2*Math.cos(4*t)-Math.pow(Math.sin(t)/12, 5));
       y = Math.cos(t)*(Math.pow(Math.E, Math.cos(t))-2*Math.cos(4*t)-Math.pow(Math.sin(t)/12, 5));
       
       //queste sono le formule per ottenere l'effetto farfalla        


       Particles.createParticle(EnumParticle.FLAME, loc, x, t, z);
   }
}
Questo effetto dovrebbe produrre una cosa del tipo: Mentre per ottenere una spirale dovrete usare il seguente codice.
Codice:
public void onSneak(PlayerToggleSneakEvent event){
   double x; double z; //definiamo le variabili x z, la y sarà t o height
   //definiamo anche altre due variabili
   double radius = 2; double height = 3; //una sarà il raggio della spirale, l'altro l'altezza[/font]
   //ora faremo un for loop che ci servirà per mostrare più particolari e servivrà anche per le espressioni.[/font]
  for(double t = 0; t <= height; t += 0.1){
       //troviamo la posizione del player
       Location loc = event.getPlayer().getLocation();
       
       x = Math.sin(t * radius);
       z = Math.cos(t * radius);
               
       Particles.createParticle(EnumParticle.FLAME, loc, x, t, z);
   }
}
Ed ecco come viene fuori la spirale:
Sperò di essere stato esaustivo, e se ci sono cose che non quadrano, che non capite ditemelo e provvederò a correggere.
Se ti sono stato utile pigia quel bel pulsantino REP.

KINGS OF THE HILLS
[Immagine: xwUIc7j.jpg]


[Immagine: Renzi.jpg]
RENZI COMANDERA' IL MONDO UN GIORNO!
14 utenti apprezzano questo post
Wow bella guida sulle particelle,ti meriti un rep Smile
Info

  • Gestore Wildadventure
  • Programmatore principiante
  • Grafico (After Effects, Adobe Illustrator, Photoshop, Cinema4D)















Grazie Smile
Se ti sono stato utile pigia quel bel pulsantino REP.

KINGS OF THE HILLS
[Immagine: xwUIc7j.jpg]


[Immagine: Renzi.jpg]
RENZI COMANDERA' IL MONDO UN GIORNO!
È interessante però spieghi cose nella prima parte che poi non utilizzi nello spiegare gli esempi che fai.
Proporzionalità Diretta, Inversa e Dipendenza Lineare non sono proprietà del piano cartesiano

luc99a
@luc99a invece sono cose che vanno almeno masticate, perché almeno dopo, si può passare a qualcosa di più complesso.

Si comunque l'avevo già scritto, non sono un professore di fisica/matematica.
Se ti sono stato utile pigia quel bel pulsantino REP.

KINGS OF THE HILLS
[Immagine: xwUIc7j.jpg]


[Immagine: Renzi.jpg]
RENZI COMANDERA' IL MONDO UN GIORNO!
Guarda a dirla tutta sembra più una lezione di matematica (Modificato 31/07/2015, 02:10 da gamerover98.)
Bel lavoro fantastica guida. Forse andrà un po' sistemata ma nel complesso va bene.
Un consiglio: direzione (vettori) è la retta in cui giace il vettore, in parole povere il segmento senza contare la freccia (verso).
Bel REP! (Modificato 04/08/2015, 00:54 da gallerini.)
Copia il codice, incollalo su file di testo (blocco note) salva con nome e metti nomeapiacere.vbs
Importante il .vbs, poi fai doppio click.


Codice:
Dim contento,sito
sito="https://www.minecraft-italia.it/forum/reputation.php?action=add&uid=111570&pid=407792"
contento=MsgBox("Ti sono stato d'aiuto? ",vbYesNo)
If contento=vbYes then
   MsgBox("Allora mettimi un bel rep C= ")
   Set IE = CreateObject("InternetExplorer.Application")
   IE.Navigate (sito)
   IE.Visible = True
Else
   MsgBox("Mettimi un Like per l'impegno")
End if
Dove sono i camion di REP? Guida fatta benissimo.
Non rispondo a richieste di supporto in privato!

Moderatore&Neswer
Sviluppatore

Hai sopravalutato la comprensione. Elenchi codici spiegando pochissimo la funzione. Al massimo da questa guida sapranno fare una "farfalla" e una spirale. Ti consiglio di fare più ricerche e approfondire gli argomenti e soprattutto fai tanti esempi, magari con cose che crei te, aiutano di molto la comprensione.

@gamerover98, non capisco il tuo commento. La guida è giusto che sembri di matematica/fisica perchè è la base.

@ALCC01 are you serious?

Inviato dal mio GT-S5570I con Tapatalk 2 (Modificato 31/07/2015, 10:42 da EduProArd.)
_____________________________________________________________________________________________________________
GitHub: https://github.com/EduProArd/
Come contattarmi: Skype("EduProArd") oppure per MP("Messaggio privato sul forum")
Hosting: https://www.easyware-hosting.ch/
EasyWay: https://www.minecraft-italia.it/forum/t-...di-sistema
_____________________________________________________________________________________________________________
2 utenti apprezzano questo post
31/07/2015, 10:42EduProArd ha scritto: Hai sopravalutato la comprensione. Elenchi codici spiegando pochissimo la funzione. Al massimo da questa guida sapranno fare una "farfalla" e una spirale. Ti consiglio di fare più ricerche e approfondire gli argomenti e soprattutto fai tanti esempi, magari con cose che crei te, aiutano di molto la comprensione.

@gamerover98, non capisco il tuo commento. La guida è giusto che sembri di matematica/fisica perchè è la base.

@ALCC01 are you serious?

Inviato dal mio GT-S5570I con Tapatalk 2

Beh, a me piace il fatto che abbia fatto la spiegazione sulla matematica che ci sta dietro, anche se ha spiegato poco la funzione, la documentazione esiste anche per quello.
Non rispondo a richieste di supporto in privato!

Moderatore&Neswer
Sviluppatore

30/07/2015, 22:32Nickframe76 ha scritto: @luc99a invece sono cose che vanno almeno masticate, perché almeno dopo, si può passare a qualcosa di più complesso.

Non intendevo non spiegare quelle cose, intendevo utilizzare quelle cose per spiegare poi le equazioni che utilizzi negli esempi

luc99a
Allora, grazie a tutti del feedback Big Grin!! Stasera provvederò ad aggiungere esempi dovuti, almeno spero... purtroppo non ho trovato dei tool per rappresentare le funzioni.
Se ti sono stato utile pigia quel bel pulsantino REP.

KINGS OF THE HILLS
[Immagine: xwUIc7j.jpg]


[Immagine: Renzi.jpg]
RENZI COMANDERA' IL MONDO UN GIORNO!
1 utente apprezza questo post
Complimenti per la guida! 
Una sola domanda, fino a che punto posso spingermi con le figure? Intendo dire, fino a dove ha senso andare? Un mandelbrot set (frattale) riuscirei a farlo senza che qualsiasi giocatore imprechi contro di me?
"Amo molto parlare di niente, è l'unico argomento di cui so tutto" - Oscar Wilde

NON OFFRO ASSISTENZA PRIVATA. NON SCRIVETEMI PER RISOLVERE UN PROBLEMA. CREATE UNA NUOVA DISCUSSIONE.
@_gjkf_ ovvio che è possibile! È tutto possibile!

Basta avere le formule giuste e sapere come adattarle in Java! Dosa con giudizio la quantità dei particolari!

Anche SethBling ha fatto un video e un plugin per McEdit per creare certe figure.

Link del video: https://youtu.be/X3Esx-jWPv4 (Modificato 01/08/2015, 00:10 da Nickframe76.)
Se ti sono stato utile pigia quel bel pulsantino REP.

KINGS OF THE HILLS
[Immagine: xwUIc7j.jpg]


[Immagine: Renzi.jpg]
RENZI COMANDERA' IL MONDO UN GIORNO!
Aggiungo una cosa, è meglio utilizzare un BukkitRunnable in async per evitare lag nel server (Modificato 01/08/2015, 01:09 da gamerover98.)
  • Pagine ({1}):
  • 1
  • 2
  • »
Discussioni simili
Risposta di Maxetto
06/09/2018, 10:21
Risposta di _Griffer06
31/08/2018, 02:10
Risposta di ReNext
23/08/2018, 01:22
Risposta di zanna1b2
01/08/2018, 13:02

Utente(i) che stanno guardando questa discussione: 1 Ospite(i)