GTAMulti - GTA Türkiye

San Andreas Multiplayer => PAWN Kodlama => Anlatımlar => Konuyu başlatan: Dyternal - 10 Aralık 2017, 19:42:56

Başlık: Yere obje atma sistemi yapmak!
Gönderen: Dyternal - 10 Aralık 2017, 19:42:56
Merhaba arkadaşlar,
Bugün sizlere bizim herhangi bir objeyi yere atmamızı ve o objenin yere fiziğine uygun bir şekilde düşmesini anlatmaya çalışacağım.
Kolay gelsin.




Gerçek fiziğe göre yapmak için 'physics' include'sini kullanacağız. pawno/include yoluna physics adında bir include dosyası açalım. İçine bunları yapıştıralım.



Includemizi oluşturduktan sonra .pwn uzantılı dosyamızın en başına şunu ekliyoruz.
#include <physics>

Burada oluşturduğumuz includemizi .pwn uzantılı dosyamıza geçirdik.

Şimdi komutumuzu ekleyelim. Ben elimizdeki elimize deagle gelmesini ve onun yere atılmasını sağlayacağım. Bu kodları OnPlayerCommandText publicine ekleyin.



if(strcmp("/yereat", cmdtext, true, 10) == 0)
{
#define HIZ (10.0) // HIZ
#define Z_HIZ (4.0) // Z konumu HIZ
#define YERCEKIMI (13.0) // Yer Çekimi
new modelid = 348; // Deagle Model ID
new Float:x, Float:y, Float:z, Float:ang; // Değişkenleri oluşturduk.
GetPlayerPos(playerid, x, y, z); // Oyuncunun Posunu çektik.
GetPlayerFacingAngle(playerid, ang); // Oyuncunun yönünü çektik.
new obj = CreateObject(modelid, x, y - 0.5 * floatcos(-(ang + 90.0), degrees), z, 93.7, 120.0, ang + 60.0); // Objemizi oluşturduk karakterin elinde.
PHY_InitObject(obj); // Objemize Fizik kurallarının ekledik
PHY_SetObjectVelocity(obj, HIZ * floatsin(-ang, degrees), HIZ * floatcos(-ang, degrees), Z_HIZ); // Hareket ettirdik.
PHY_SetObjectFriction(obj, 100); // Sürtünmeyi ayarladık.
PHY_SetObjectGravity(obj, YERCEKIMI); // Yerçekimini Ayarladık.
PHY_SetObjectZBound(obj, z - 1.0, _, 0.0); // Objenin Boundunu ayarladık.
ApplyAnimation(playerid,"GRENADE","WEAPON_throwu",3.0,0,0,0,0,0); // Animasyon verdik.
return 1; // return ile döndürdük
}


#define'ler sayesinde değişkkenleri tanımladık.
new'ler sayesinde değişkenlerimizi oluşturduk.
GetPlayerPos sayesinde oyuncunun pozisyonunu çektik.
GetPlayerFacingAngle sayesinde oyuncunun rotasyonunu çektik. Yani dönmüş olduğu noktayı.
CreateObject sayesinde karakterin eline obje oluşturduk.
PHY_InitObject sayesinde objemize fizik kurallarını ekledik.
PHY_SetObjectVelocity sayesinde hareket ettirdik.
PHY_SetObjectFriction sayesinde sürtünmeyi ayarladık.
PHY_SetObjectGravity sayesinde yerçekimini ayarladık.
PHY_SetObjectZBound sayesinde objenin boundunu ayarladık.
ApplyAnimation sayesinde karakterimizin animasyon oynatmasını sağladık.


Bu include sayesinde bu ve daha fazlası(futbol, basketbol, bilardo vb.) sistemleri yapabilirsiniz. Umarım anlamışsınızdır iyi akşamlar.
Başlık: Ynt: Yere obje atma sistemi yapmak!
Gönderen: pag - 10 Aralık 2017, 19:52:58
Hep çalışma mantığını merak ettiğim fakat hiç araştırmadığım bir konuydu,teşekkürler  :helal:
Başlık: Ynt: Yere obje atma sistemi yapmak!
Gönderen: TRSinan28 - 10 Aralık 2017, 20:45:48
Eline koluna sağlık :) Güzel anlatım  :helal:
Başlık: Ynt: Yere obje atma sistemi yapmak!
Gönderen: Matite - 10 Aralık 2017, 22:38:37
güzel anlatım için teşekkürler.
Başlık: Ynt: Yere obje atma sistemi yapmak!
Gönderen: Dyternal - 11 Aralık 2017, 10:11:23
Alıntı yapılan: ReDDooM - 10 Aralık 2017, 19:52:58

Hep çalışma mantığını merak ettiğim fakat hiç araştırmadığım bir konuydu,teşekkürler  :helal:

Yardımcı olduysam ne mutlu bana.
[quote author=
Sinan28 link=topic=2544.msg21777#msg21777 date=1512927948]
Eline koluna sağlık :) Güzel anlatım  :helal:
[/quote]
Teşekkürler :helal:.
Alıntı yapılan: Matite - 10 Aralık 2017, 22:38:37

güzel anlatım için teşekkürler.

Teşekkürler :helal:.
Başlık: Ynt: Yere obje atma sistemi yapmak!
Gönderen: Lé Spîke - 11 Aralık 2017, 16:00:01
Nice :) eklerim konuya :helal:
Başlık: Ynt: Yere obje atma sistemi yapmak!
Gönderen: Jizzy - 06 Ocak 2018, 13:57:00
Eline Sağlık güzel anlatım. :kahkaha:
Başlık: Ynt: Yere obje atma sistemi yapmak!
Gönderen: FelleR - 27 Haziran 2019, 01:36:16
Yararlı.