Search:

Kamis, 25 September 2014

Game Maker : My special function package (Direction) Free! [With Indonesia Explanation]

 Selamat datang kembali, bingung nih mau buat refrensi untuk game maker apa lagi, setelah saya pikir-pikir saya punya External Function sendiri untuk Game Maker tentunya ^_^ .

Sebenarnya function ini adalah function pribadi, khusus untuk saya sendiri, namun karena bagi saya Function ini mungkin lebih dibutuhkan oleh orang lain dibanding saya, maka tidak salah bukan kalau kita berbagi :) hehehe..

Oke, kalau boleh saya jelaskan. Function ini adalah function yang dikhususkan dalam sisi Direction atau Sudut. jadi waktu saya ingin membuat project yaitu game jenis tembak-tembakan berbentuk 2d (kamera hadap atas) saya kesulitan membuat sistem tembok nya, jadi saya kebingungan saat itu dengan kondisi saya belum memahami materi Trigonometri yang telah diajarkan dari kelas 2 SMA.. waktu itu saya amat benci dengan Materi Trigonometri karena kita harus memahami apa itu fungsi Sin() Cos() dan Tan().. padahal setahu saya Sin, Cos , Tan ini sangat berguna pada pembuatan Game 3D .. oleh maka itu saya mulai belajar Trigonometri dan membuat function agar dapat membantu saya untuk memecahkan logika dalam membuat script , seperti ujung tembakan, arah peluru, tembok yang akan mengenai peluru dan sebagainya.

dan Voala!... saya sekarang mencintai materi Trigonometri, dan semakin bangga kalau saya telah mengenal Game Maker ^_^ ..

Oke, tidak lama-lama saya akan menjelaskan function external ini.
Ettss... terakhir saya ingin memberitahu masa pembuatan Function ini, Function Package yang saya publikasikan ini adalah revisi kedua dari Function Package yang telah dibuat dari 14 Agustus 2013, Revisi kedua saya selesaikan pada tanggal 13 Desember 2013.

Kalian bisa mendownloadnya disini :

http://adf.ly/sKtYD

Oke saya akan jelaskan.

Pada Function Package ini, berisi 9 Function , yaitu :

  • dir_in_dir( dirmin,dir,dirmax );
  • dir_in_line( line_x1,line_y1,line_x2,line_y2,point_x,point_y,point_dir );
  • direct( direction );
  • dirview_in_line(  line_x1,line_y1,line_x2,line_y2,point_x,point_y,point_dir_min,point_dir_max );
  • length_of_dir( dir1,dir2 );
  • length_on_dir( dir1,dir2 );
  • point_cross( x1,y1,dir1,x2,y2,dir2 );
  • point_cross_x( x1,y1,dir1,x2,y2,dir2 );
  • point_cross_y( x1,y1,dir1,x2,y2,dir2 );

Baiklah saya akan menjelaskan satu persatu :

Point Cross

     Disini saya menamakan point cross karena ini menghitung pertemuan titik silang antara 2 garis yang berbeda, ada garis 1 dan garis 2.

Bisa dilihat dari gambar disamping, dari ketiga function point cross itu mempunyai kesamaan argument, yaitu x1,y1,dir1,x2,y2,dir2.

pada gambar disamping (x1,y1) adalah titik awal garis 1 dan "A" pada gambar disamping adalah nilai dir1. begitu juga dengan (x2,y2) adalah titik awal garis 2 dan "B" adalah nilai dari dir2.

pada ketiga function mempunyai nilai value yang berbeda, yaitu :

point_cross_x(x1,y1,A,x2,y2,B) menghasilkan nilai dari x3 (bisa dilihat digambar titik ke 3 adalah pertemuan antara garis 1 dan 2)

point_cross_y(x1,y1,A,x2,y2,B) menghasilkan nilai dari y3.

sedangkan , point_cross(x1,y1,A,x2,y2,B) menghasilkan nilai dari L (L adalah jarak dari titik 1 ke titik persilangan yaitu dari (x1,y1) ke (x3,y3) ).


Direct

      Direct adalah function yang saya buat untuk membetulkan nilai sudut pada suatu nilai. dengan syntax :
direct( direction );

direction adalah nilai integer. seperti yang kita ketahui, sudut adalah sebuah nilai dari 0°-359° (360° adalah 0°). oleh maka itu fungsi Direct ini adalah sebagai function untuk membetulkan nilai yang bersyarat ini.

sebagai contoh , seperti script ini :

true_dir = direct(-122);

-122 adalah nilai diluar 0° dan 359° , oleh maka itu saat kita menggunakan direct(), maka hasilnya nilai sudut yang benar akan muncul , yaitu pada nilai true_dir. dan setelah dilihat , nilai true_dir adalah 238 ^_^.

Length Of/On Dir

     Disini saya ketahuan membuat script dengan nama bahasa inggris yang belum tentu benar ^_^ , tujuan utama saya untuk menamakan length_of_dir dan length_on_dir adalah untuk membedakan fungsi namun memiliki tujuan yang hampir sama. lalu apa perbedaannya?

Informasi sedikit. Kedua function ini dibuat untuk menentukan jarak antara sudut dengan sudut. namun bedanya, hasil pada length_of_dir adalah jarak dari sudut pertama ke sudut kedua (arah berlawanan jarum jam), sedangkan length_on_dir adalah jarak terdekat antara sudut pertama ke sudut kedua , dengan berarti length_on_dir memiliki nilai <=180 dan >=0.


seperti simulasi pada gambar berikut :



pertama tama kita ketahui nilai dari masing-masing variable :

a = 0;

b = 50;
c = 225;

jika kita menulis length_on_dir(a,c) , maka nilai dari fungsi tersebut adalah jarak sudut terdekat antara sudut a kesudut b. dengan begitu nilai dari :

length_on_dir(a,c)  adalah 135
° .



namun berbeda dengan length_of_dir(a,c) , nilai yang dihasilkan adalah jarak dari sudut a ke sudut b.
yaitu :

length_of_dir(a,c) adalah 225° (225°-0°) .. 
berarti,  dengan begitu rumusnya adalah (c-a) ?Nah, ini tidak bisa dikatakan salah, namun length_of_dir() ini akan lebih efektif pada sudut yang melewati nilai 0° . seperti :

length_of_dir(c,b) --> yaitu jarak dari 225° ke 50° , jika kita menggunakan length_of_dir, maka akan menghasilkan nilai 185 , yaitu (360-225) [jarak dari 225° ke 0°] +(50-0) [jarak dari 0° ke 50°].

Dir in

    Dir in adalah Function yang saya buat untuk mengecek sebuah sudut , apakah sudut tersebut berada pada sebuah kondisi? Yap, pada function Point Cross itu adalah fungsi yang menghitung titik yang menyilang dari sudut 1 pada sudut ke 2. namun berbeda kasus pada Dir In ini, Dir In adalah function yang hanya memberikan nilai true atau false , yang membuktikan bahwa sudut berada pada suatu kondisi.

Terdapat 2 function Dir In ini :


  1. dir_in_dir( dirmin,dir,dirmax );

        dir_in_dir()
    adalah function yang menghasilkan nilai true jika dir berada pada dirmin dan dirmax.sebagai contoh pada gambar berikut :

    terdapat 2 sudut garis yang berbeda, yang 1 adalah A yang berada pada dirmin dan dirmax sedangkan B berada diluar garis dirmin dan dirmax.

    dengan begitu jika kita menulis :

    dir_in_dir(dirmin,A,dirmax) maka akan menghasilkan nilai true, karena sudut A berada didalam dirmin dan dirmax, sedangkan.

    dir_in_dir(dirmin,B,dirmax) akan menghasilkan nilai false, karena berada diluar dirmin dan dirmax ..

    dengan begitu, jika dir_in_dir(0,90,180) bernilai false atau true ? .. ya jelas true, sebab 90° berada pada 0° dan 180° (semoga dengan contoh ini kalian mengerti ya) ..
  2. dir_in_line( line_x1,line_y1,line_x2,line_y2,point_x,point_y,point_dir );

         dir_in_line()
    adalah function untuk mengecek pada suatu sudut yang berada pada sebuah garis yang letak dan sudutnya telah ditentukan. hampir sama dengan dir_in_dir() namun dir_in_line() mempunyai dirmin yaitu sudut terkecil dari titik sudut ke salah satu ujung garis, dan dirmax yaitu sudut terbesar dari titik sudut ke salah satu ujung garis .. seperti gambar berikut :

    gambar disamping memperlihatkan 2 sudut yaitu A dan B, memiliki nilai yang berbeda dan kondisi yang berbeda, yaitu kondisi A dimana berada pada dirmin dan dirmax, sedangkan kondisi B dimana B diluar dari dirmin dan dirmax.

    oleh maka itu saat kita menulis :

    dir_in_line(x1,y1,x2,y2,point_x,point_y,A);maka hasil dari dir_in_line() adalah true, berbeda jika sudutnya adalah B, maka hasilnya adalah false.

    silahkan cari dir_in_line(10,0,100,0,55,60,90) , true atau false?.. coba bayangkan diotak anda, gampang kok!


    Dir View In Line

          dirview_in_line() sama seperti dir_in_line() , namun perbedaannya adalah titik sudut dari point nya, dalam dirview_in_line() ini tidak hanya mempunyai dirmin dan dirmax pada line nya , namun pointnya juga punya memiliki dirmin dan dirmax, kali ini saya hanya akan memberitahukan secara kompleks bagaimana hasil dari dirview_in_line() ini bekerja , dengan sebuah gambar berikut :

    Hasil disamping menyatakan bahwa :

    dirview_in_line(x1,y1,x2,y2, point_x,point_y,point_dirmin,point_dirmax);

    bernilai true, sebab diantara dirmin point dengan dirmax point terdapat daerah antara dirmin line dengan dirmax line. jika diantara dirmin point dengan dirmax point tidak terdapat daerah antara dirmin line dengan dirmax line maka hasil yang dihasilkan adalah false.




    Oke, inilah Extension yang sudah tidak lagi menjadi pribadi buat saya.. hehe..
    semoga dengan begini kalian mungkin akan "sedikit" terbantu dalam membuat game yang berbau sudut atau direction.Download nya diatas (bukan fake kok) , nanti ada file *.gex, dan silahkan di Install dulu digame maker , dengan cara pilih pada title bar yaitu Resources > Select Extension Package > Click Install > akan muncul box baru dan pilih Install pada captionnya. > Cari File *.gex yang baru didownload, (tadi downloadnya format *.rar , lebih baik di extract dahulu , agar file *.gex-nya kelihatan) > Jika sudah, Click Open > lalu akan terlihat di available package ada Extension baru. lalu Click "Direction Function Package" > dan akan muncul panah kekiri, lalu Click Panah Ke Kiri yang baru muncul tersebut > Lalu pilih ok ,dan....... > Selesai!

    Oke, semoga Extension saya dapat membantu, mohon maaf jika ada salah kata.
    Terima Kasih~

    1 komentar:

    1. columbia titanium | TI - TITanium Art
      COLUMBIA titanium titanium exhaust is can titanium rings be resized made with a top of copper plate. The copper titanium engagement rings plate titanium phone case is designed to be attached titanium scrap price with the top plate.

      BalasHapus