Çok güzel bir şey farkettim bu sistem baya kullanışlı olabiliyor. Şöyle ki, yazacağım fonksiyonun asıl amacı girdiğin sprite'ın tam orta noktasını bulmak. Yani 32x32'lik bir sprite'ın origin'ini değil de tam olarak 16x16 noktasının koordinatlarını bulmaya yarıyor. (Not: Fonksiyon GM2 için yazılmıştır, eğer GM1.4'de kullanacaksanız fonksiyonu o sürüme göre uyarlamanız gerekecektir)
function animation_find_center(x_or_y,_x,_y,sprite,xscale,yscale,angle){ var norm_xcenter = _x - sprite_get_xoffset(sprite)*xscale + (sprite_get_width(sprite) / 2)*xscale; var norm_ycenter = _y - sprite_get_yoffset(sprite)*yscale + (sprite_get_height(sprite) / 2)*yscale; var norm_dir = point_direction(_x,_y,norm_xcenter,norm_ycenter); var norm_dis = point_distance(_x,_y,norm_xcenter,norm_ycenter); var x_center = _x + lengthdir_x(norm_dis,norm_dir+angle); var y_center = _y + lengthdir_y(norm_dis,norm_dir+angle); if(x_or_y == "x") return x_center; else if(x_or_y == "y") return y_center; }
Mesela ben bunu oyuncunun tuttuğu silahlarda kullanıyorum. Oyuncu silahı origin noktasından tutarken, mermi sprite'ın tam orta noktasında oluşuyor ve bu her açıya, xscale'a göre falan otomatik hesaplanıyor onları dert etmenize gerek yok. Benzer şekilde mesela platform oyunlarında oyuncunun origin'ini en alt orta nokta ayarlarız fakat oyuncunun tam ortasında çıkmasını istediğimiz bir efekt falan varsa bunu y-8 gibisinden yazardık. Bu fonksiyon ile onlara gerek kalmıyor. Sprite'ın tam ortasını otomatik hesaplıyor.
Örnek bir kullanım:

Solda gördüğünüz gibi, bir silah sprite'ı yüklediğimde oyuncunun tutacağı yeri sprite'ın origini olarak seçiyorum ve merminin çıkacağı yeri de tam olarak sprite'ın ortasına denk getiriyorum.


Ardından ise bu fonksiyonu kullanarak, nereye nişan alırsam alayım oyuncunun silahı tam origin noktasından tutup, merminin ise tam olarak silahın ucundan ateşlenmesini sağlayabiliyorum.
Kod içinde kullanımı: 1.argument -> Orta noktanın x'ini mi yoksa y'sini mi istediğinizi seçiniz 2.argument -> Sprite'ın/Obje'nin x noktası 3.argument -> Sprite'ın/Obje'nin y noktası 4.argument -> Sprite'ın index'i 5.argument -> Sprite'ın/Obje'nin x scale değeri 6.argument -> Sprite'ın/Obje'nin y scale değeri 7.argument -> Sprite'ın/Obje'nin açısı
sprite_xcenter = animation_find_center("x",x,y,sprite_index,image_xscale,image_yscale,image_angle); sprite_ycenter = animation_find_center("y",x,y,sprite_index,image_xscale,image_yscale,image_angle);
Son söz: Okuduğunuz için teşekkür ederim 😊 Eğer bir bug veya eksiklik farkederseniz bunu yorumlarda bildirirseniz sevinirim.
Mütiş bir anlatım olmuş.
muazzem
scriptin yararlı olmasının yanı sıra, sitede baş köşeye asabileceğimiz düzende örnek bir yazı😄