Sol Reklam

Rehber [Bölüm 1] Spigot İleri Seviye Partikül Oluşturma Rehberi

Durum
Mesaj gönderimine kapalı.

why_shiro

Aerospace Nerd
Emekli

Discord:

why_shiro

Katılım
3 Haziran 2019
Mesajlar
235
Elmaslar
252
Puanlar
7.295
Yaş
22
Yer
Türkiye
Discord İzni
Minecraft
GrimOK
Twitter
whyshiro_
Selamlar MC-TR Forumu,


Bu gün sizlere SpigotAPI kullanark nasıl partiküler şekiller yapabileceğinizi öğreteceğim. Öncelike söylemem gerekiyor ki bu kurs ileri seviye matematik içermektedir (trigonometrik fonksiyonlar ve parametrik denklemler). Bu konuyu anlaşılır kılmak için ilk önce basit ve anlaşılır bir şekilde trigonometrik fonksiyonları size anlatacağım. Sonra bu fonksiyonları analitik düzlemde inceleyeceğiz ve parametrik denklemler sayesinde bir çember oluşturacağız. Hemen ardından SpigotAPI tarafından bize sunulan Location sınıfından bir obje oluşturup bunları nasıl kullanabileceğinizi sizlere öğreteceğim. İlk önce trigonometrik fonksiyonlar hakkında konuşalım.




Trigonometrik Fonksiyonlar

Sinüs Fonksiyonu:


Bu kısımda sadece iki adet trigonometrik fonksiyon göreceğiz. Bunlar Y = sin(t) (sinüs fonksiyonu) ve y=cos(t) (kosinüs fonksiyonu). Bu fonksiyonların ikisi de periyodiktir. Belirli bir zamandan sonra kendilerini tekrarlar. Aynı ses dalgılarının enerji kaybetmeden yayılması gibi. İlk önce sinüs fonksiyonuna bakalım:

400px-Sinus.svg.png

Burada iki boyutlu bir düzlem bizi karşılamakta. Bu düzlem bir analitik düzlemdir ve iki boyutludur. Kırmızı, dalgalı bir çizgi bu düzlemimizin üzerinde. Bu dalgalı çizgi bizim fonksiyonumuz. Sinüs fonksiyonunun kökleri vardır. Bu kökler tam sayı ile bulunamaz. Bu kökler radyan veya derece şeklinde bulunabilir. Burada gördüğümüz pi sayısı (π) radyandır. Radyan bir açı birimidir, uzunluk birimi değildir. Radyan, bir dairede yarıçap uzunluğundaki yay parçasını gören merkez açıya eşit açı ölçme birimidir. Bir radyan (π), 180 dereceye eşittir. Şimdi bunu da öğrendiğimize göre köklere geçelim. Buradaki kökler ileride parametrik denklem kullandığımız zaman işimize yarayacak.

Burada sinüs fonksiyonunun kökleri derece olarak : 0, 180, 360, 540... olarak girmekte. Bu değerlerde sinüs 0'dır.

Aynı zamanda sinüsün "1" olduğu değerleri de bilmemiz gerekiyor. Bunlar: 90, 270,450... Burada değerler sadece "1" olmuyor. 270, 630.. derece gibi katlarında [270 + n(360)] fonksiyon "-1" değerini almakta. Bunu da not edip diğer fonksiyona geçelim.



Kosinüs Fonksiyonu:

Bu kısımda sinüs fonksiyonunu incelediğimiz gibi bir de kosinüs fonksiyonuna bakacağız. Bu kısımda lafı uzatmayacağım. Kosinüs fonksiyonunu sanki sinüs fonksiyonunu sola doğru ötelemişiz gibi elde edebiliriz:

cos-graph.png

Göreceğiniz üzere burada köklerin yerleri tam tersi oldu. 0 derecede 1, 90 derecede ise 0 aldı. Bu kısmı uzatmadan parametrik denklemlere geçiyorum. Merak edenler için bu iki fonksiyonun köklerini aşağıya bırakıyorum:

trigonometrik_kökler.jpg



Parametrik Denklemler

Parametrik denklemler, bir veya daha fazla bağımsız değişkenin parametreleri olarak adlandırılan fonksiyonları olarak bir grup niceliği tanımlar. Yani size özetlemek için şöyle söyleyeyim: "İki veya daha fazla değişken alabilen fonksiyonlar."

O zaman şöyle bir parametrik denklem oluşturalım:

x = cos(t)
y = sin(t)


ve bunu tek bir fonksiyon haline getirirsek çember elde etmiş oluruz. Şu anda elimde yeterince imkan olamamasından ötürü size internetten bulduğum görseli paylaşacağım. Burada değerlerimiz beşin kati ile genişletilmiş. Yani çember büyütülmüş. Aynı zamanda çemberimizin yarıçapı 5 olmuştur. Yani:

x = 5cos(t)
y = 5sin(t)


Görsele dökersek eğer:
11.2.3.png


Çemberini elde etmiş oluruz. Peki nasıl oldu bu? Daha önceden size dediğim kökler ve noktalar var ya, hadi onları yerlerine yerleştirelim:

p1.jpg

(Fotoğrafı ben çektim. Kalite kötü ise kusura bakmayın)
Son olarak bunları analitik düzleme dizelim:

p2.jpg

Bizim değerimiz sürekli olarak artacağından bu noktalar arasında hareket ederken parabolik bir hareket yapacak. Yani çember elde etmiş olacağız. Son olarak daha iyi anlamanız için bir görsel bırakıyorum:

0a6be35a873ffb7c8867ee6e896cc9495c40b136.gif

Hadi lafı uzatmadan koda geçelim!



Kodlama Kısmı:

Java:
    private void createRingParticle(final Player p ) {
        new BukkitRunnable() { // Bir adet runnable oluşturduk. Runnable, bir kod takımını istediğimiz süreç içerisinde sürekl, olarak tekrar eder.

            double rad = 0; // radyan değerimizi belirlediğimiz bir double değeri. Double veri tipi kesirli sayıları tutmak için kullanılır

            public void run() { // Kodumuzun çalışcağı fonksiyon.

                rad += Math.PI / 16; // Radyanımızı her tur başında pi / 16 artacak şekilde belirledik. Bu işlem bizim dairemizi 8 eş bölüme ayırdı.

                //p.sendMessage(String.valueOf(rad)); //Debugging için oyuncuya radyanı gönderdiğimiz kod.

                Location location = p.getLocation(); // Kullanıcının lokasyonunu aldık.

                Location particleBuilder1 = location.clone().add(Math.cos(rad), 1.85,  Math.sin(rad)); //Yeni bir lokasyon oluşturduk. Eski lokasyonu
                // kopyaladık ve ardından sinüs (x), partikülün ayağımızdan yüksekliğini (y = 1.85) ve kosinüs (z) değerlerini önceki lokasyona atadık.

                p.spawnParticle(Particle.FLAME,particleBuilder1,0,0,0,0); // Oyuncunun üzerine bu partikülleri gönderdik.


            }
        }.runTaskTimer( JavaPlugin.getPlugin( Main.class ), 0, 1 );
    }

Ve işte sonucumuz:

2021-07-24_22.19.07.png

(Üstümüzdeki partiküller sürekli dönmektedir)
Aynı zamanda bu kısmı şu şekilde değiştirirsek çapraz bir yüzük elde etmiş olacağız:

Java:
Location particleBuilder1 = location.clone().add(Math.cos(rad), 1.85,  Math.sin(rad));

//Bu kısmı şu şekilde değiştirelim:

Location particleBuilder1 = location.clone().add(Math.cos(rad), Math.sin(rad) + 1,  Math.sin(rad));

Bu kodun sonucu ise şu şekildedir:

2021-07-24_22.24.04.png





Evet arkadaşlar, umarım sizlere bir şeyler öğretebilmişimdir. İleriki zamanlarda daha karmaşık partikülleri ele alacağım. Şimdilik elimden bu kadar geliyor. Matematik hayatınızın bir kısmında mutlaka karşınıza çıkıyor. O yüzden matematiği bir düşman değil, bir hobi olarak görün. Sonraki dersimizde görüşmek üzere!

Bu arada sorularınız için Discord'dan bana ulaşabilirsiniz: Grim#2005
 

Ekler

  • 400px-Sinus.svg.png
    400px-Sinus.svg.png
    9,4 KB · Görünt.: 60

Deleted User 131734

Nerelerdesin Be Zümrüt?
Katılım
23 Şubat 2021
Mesajlar
559
Elmaslar
422
Puanlar
4.075
Yer
Avusturya
Çok güzel bir Tanıtım olmuş ellerinize sağlık.
 

why_shiro

Aerospace Nerd
Emekli

Discord:

why_shiro

Katılım
3 Haziran 2019
Mesajlar
235
Elmaslar
252
Puanlar
7.295
Yaş
22
Yer
Türkiye
Discord İzni
Minecraft
GrimOK
Twitter
whyshiro_

Buhari

Software Developer
Yönetici
Emektar
Onaylı Satıcı

Discord:

xBuhari

Katılım
6 Eylül 2017
Mesajlar
1.878
Elmaslar
1.008
Puanlar
18.150
Discord İzni
Minecraft
xBuhari
Forumda böyle rehberleri görmek çok hoş. Başarılar.
 

why_shiro

Aerospace Nerd
Emekli

Discord:

why_shiro

Katılım
3 Haziran 2019
Mesajlar
235
Elmaslar
252
Puanlar
7.295
Yaş
22
Yer
Türkiye
Discord İzni
Minecraft
GrimOK
Twitter
whyshiro_

KardasLand

Creeper Evimi Patlattı

Discord:

KardasLand#9552

Katılım
24 Şubat 2020
Mesajlar
392
Elmaslar
767
Puanlar
6.550
Yer
İstanbul
Minecraft
KardasLand
Gayet güzel, hoş, emek de var, yanlış anlamayın ama neden bunu Spigot gibi daha etkileşim görebilen yerlerde paylaşmadınız (Tüm her şey size aitse tabii)? Yani bu tür hesaplamayı yapıp hem de javaya döken kaç kişi var ki burada? Elimle sayabilirim maksimum 10-15 kişi. Onların da zaten bu tür hesaplamaları yapacak kapasitede olduklarını düşünüyorum.

Eh en azından stackoverflow veya spigot hariç türkçe kaynak isteyenler için gayet güzel, başarılar takipteyim ^ ^.
 

why_shiro

Aerospace Nerd
Emekli

Discord:

why_shiro

Katılım
3 Haziran 2019
Mesajlar
235
Elmaslar
252
Puanlar
7.295
Yaş
22
Yer
Türkiye
Discord İzni
Minecraft
GrimOK
Twitter
whyshiro_
Gayet güzel, hoş, emek de var, yanlış anlamayın ama neden bunu Spigot gibi daha etkileşim görebilen yerlerde paylaşmadınız (Tüm her şey size aitse tabii)? Yani bu tür hesaplamayı yapıp hem de javaya döken kaç kişi var ki burada? Elimle sayabilirim maksimum 10-15 kişi. Onların da zaten bu tür hesaplamaları yapacak kapasitede olduklarını düşünüyorum.

Eh en azından stackoverflow veya spigot hariç türkçe kaynak isteyenler için gayet güzel, başarılar takipteyim ^ ^.

Yok yok dediklerinizi anlıyorum. Şöyle ki bunu yazıp hazırlamam vs. toplam bir - bir buçuk saatimi aldı. Bir de bunu İngilizce'ye çevirip paylaşması beni çok yorardı (çünkü geç saatte hazırlamaya başladım). Burada bana ait olmayan tek şey gif görseli. Onu da konuyu çok güzel bir şekilde açıkladığı için seçtim. Partiküller hakkında belki birileri bir şeyler öğrenmek isteyebilir. Cidden matematik ve java bilen sayısı aramızda çok az. İleriki zamanlarda daha karmaşık konuları da paylaşmayı düşünüyorum. Hayırlısı bakalım ben de seni takip etmek istiyordum ancak Discord arkadaşlık isteklerini bi' açmadın be :D Eğer kabul edersen bir ara tanışmak isterim.
 

RigerCrows

Play.RookiCraft.Net

Discord:

RigerCrows#7509

Katılım
19 Ekim 2016
Mesajlar
67
Elmaslar
63
Puanlar
13.675
Minecraft
RigerCrows
Konu gayet yararlı ve geliştirilmeye açık bir anlatım olmuş tebrikler.
 

Cazcez

Çerezler Güzeldir!
Premium
Emektar

Discord:

CazcezXD#4073

Katılım
8 Haziran 2015
Mesajlar
229
Elmaslar
1.244
Puanlar
15.660
Yer
JEFF Media GbR
Discord İzni
Minecraft
Cazcez
Bu ve buna benzer konuları forumda görmek gerçekten umut ve zevk verici :) Yabancı forumlarda bile böyle içeriklere rastlamak çok zor.

Teşekkür ederim meslektaşım. Umarım bilgilendirici bir konu olmuştur.
Sorması ayıptır, mesleğiniz nedir acaba?
 

HaktanOzkan

Demir Cevheri Gibiyim
Premium

Discord:

hktanozkan

Katılım
22 Temmuz 2014
Mesajlar
187
Elmaslar
100
Puanlar
13.775
Minecraft
HaktanOzkan
Böyle rehber konularına ihtiyacı var herkesin. Yararlı konu, elması hak ediyor.
 
S

Silinen üye 66370

Ziyaretçi

Inxity

Owner @ ᴛʀᴇᴀsᴜʀᴇ
Emektar
Hosting Görevlisi

Discord:

Inxity#3240

Katılım
25 Ocak 2015
Mesajlar
534
Elmaslar
286
Puanlar
14.785
Yer
Treasure Inc.
Minecraft
Inxityy
Belki de çoğu kişinin işine yaramayacak ama forumda bu tarz rehberler görmek sevindirici, insanları belki bir şeyler öğrenmeye teşvik edebilir. Elinize sağlık.
 

why_shiro

Aerospace Nerd
Emekli

Discord:

why_shiro

Katılım
3 Haziran 2019
Mesajlar
235
Elmaslar
252
Puanlar
7.295
Yaş
22
Yer
Türkiye
Discord İzni
Minecraft
GrimOK
Twitter
whyshiro_
Bilgi

Hemen buraya not düşmek istiyorum. Konu kısa sürede çok beğenildi. Bundan dolayı herkese teşekkür ederim. Ek olarak daha da ileriye gitmek isteyen arkadaşlar için diğer konuda parametrik yüzeyler hakkında bilgi vereceğim ve "huni", "küre" vb. efektleri sizlerle oluşturacağız. Sonrasında daha karmaşık fonksiyonları ele alıp daha karmaşık partiküller oluşturacağız. Konunun sonunda ise artık elimden geldiğimce kendim yazdığım ve dışarıdan bulduğum tüm kaynak dosyaları ve partikül kodlarını sizlerle paylaşacağım. Herkese iyi forumlar!
 

why_shiro

Aerospace Nerd
Emekli

Discord:

why_shiro

Katılım
3 Haziran 2019
Mesajlar
235
Elmaslar
252
Puanlar
7.295
Yaş
22
Yer
Türkiye
Discord İzni
Minecraft
GrimOK
Twitter
whyshiro_
Bu ve buna benzer konuları forumda görmek gerçekten umut ve zevk verici :) Yabancı forumlarda bile böyle içeriklere rastlamak çok zor.


Sorması ayıptır, mesleğiniz nedir acaba?

Sanırım geliştiriciyiz ?.
 
Durum
Mesaj gönderimine kapalı.
Neden altınlarını Discord sunucumuzda kazmıyorsun? TIKLA VE KATIL!
Yukarı