Per 2016, RMID pindah ke RMID Discord (Invite link dihapus untuk mencegah spambot -Theo @ 2019). Posting sudah tidak bisa dilakukan lagi.
Mohon maaf atas ketidaknyamanannya dan mohon kerjasamanya.

Share | 
 

 [GML] Projectile Launch Aiming Finder

Topik sebelumnya Topik selanjutnya Go down 
[GML] Projectile Launch Aiming Finder Empty2010-10-31, 20:33
Post[GML] Projectile Launch Aiming Finder
#1
bungatepijalan 
Moe Princess
bungatepijalan

Level 5
Posts : 1487
Thanked : 30
Engine : Multi-Engine User
Skill : Intermediate
Type : Developer
Awards:
[GML] Projectile Launch Aiming Finder Vide
Overview:

Script: parabola
Code:
/*
parabola: (x0,y0,x1,y1) -> (theta,v0)

Computes launch speed of the projectile (v0) with randomly given elevation
angle (theta), for known the launcher coordinate (x0,y0) and the target
coordinate (x1,y1); in case of no forces applied but the constant gravity.
*/
x0=argument0
y1=argument1
x1=argument2
y0=argument3
g=XXX //Replace with a reasonable value
theta=pi/2-random(pi/2-arctan((y1-y0)/(x1-x0)))
v0=(x1-x0)/cos(theta)*sqrt(.5*g/((x1-x0)*tan(theta)-(y1-y0)))

Script: parabola2
Code:
/*
parabola2: (x0,y0,x1,y1,ax,ay) -> (theta,v0)

Computes launch speed of the projectile (v0) with randomly given elevation
angle (theta), for known the launcher coordinate (x0,y0), the target
coordinate (x1,y1), and x-component and y-component of wind acceleration;
in case of no another forces applied.
*/
x0=argument0
y1=argument1
x1=argument2
y0=argument3
ax=argument4
ay=argument5
g=XXX //Replace with a reasonable value
do{
    theta=random(pi/2)
    k=((y1-y0)/(x1-x0)-(ay-g)/ax)/(sin(theta)-(ay-g)/ax*cos(theta))
}until(ax*(x1-x0)/(1-k*cos(theta))>=0)
v0=k*sqrt(.5*ax*(x1-x0)/(1-k*cos(theta)))

Fungsi: menghitung laju luncur peluru (v0) dan sudut elevasi (theta) agar peluru dapat mengenai target dengan tepat

Deskripsi script:
- parabola: menghitung laju luncur peluru (v0) dan sudut elevasi (theta), dalam kasus hanya gaya gravitasi yang bekerja pada peluru
- parabola2: menghitung laju luncur peluru (v0) dan sudut elevasi (theta), dengan besar dan arah percepatan angin yang juga bekerja pada peluru, selain gaya gravitasi

Cara pemasangan:
- Buat salah satu script baru: parabola atau parabola2
- Copas bagian code di atas ke masing2 script tersebut
- Implementasikan script tersebut ke action Execute a piece of code pada Event saat peluru akan dibuat (diluncurkan).
- Pada peluru yang diluncurkan, set speed=v0, direction=radtodeg(theta). Set gravity=g, jika menggunakan parabola (kasus tidak ada angin), atau set gravity=point_distance(0,0,ax,ay-g) dan gravity_direction=point_direction(0,0,ax,ay-g).

Created by: Bunga Tepi Jalan

 

[GML] Projectile Launch Aiming Finder

Topik sebelumnya Topik selanjutnya Kembali Ke Atas 

Similar topics

+
Halaman 1 dari 1

Permissions in this forum:Anda tidak dapat menjawab topik
RPGMakerID :: Scripts & Event Systems :: Game Maker Scripts-