Game Maker 3D FPS Yapımı

'iMuh@fiz

Özel Üye
11 Ağu 2012
11,010
4
31
Bakü
Merhaba.Bugün sizlere internetten bulduğum önemli bir dersi paylaşayım dedim.

Öncelikle gene mouse sabitleme sistemini kullanıcağız.(bknz:tps)

Biz zdir (y) eksenini ve direction (z) eksenini kullanıcağız diğer x ekseni ile teknik açıdan bir işimiz olmıyacak


.
Kamera Objemizde (event ise sürekli tekrar olucağından stepdir.)
direction-=(display_mouse_get_x()-display_get_width()/2)/8;//dir
zdir-=(display_mouse_get_y()-display_get_height()/2)/8;//zdir
display_mouse_set(display_get_width()/2,display_get_height()/2);//sabitleme

// 90 ,-90,... ve katlarında enteresan bir ekran kayması oluyor sanki tds oyunu yapıyormuş gibi kamera yukarıdan baktığı için bu eksenleri komple kısıtladım.

{if zdir > 89 then zdir = 89;}// +-90 da ekran kayması oluyordu onu kısıtladık
{if zdir < -89 then zdir = -89;}

Kamera Objemiz Draw Event

d3d_set_projection(x,y,13,x+cos(direction*pi/180),y-sin(direction*pi/180),13+tan(degtorad(zdir)), 0,0,1); // kamerayı cos,sin ve tan değerlerine baktırdık.



//execute_file("dc.txt") şeklinde kontrol edipte attım ben kodları. Bu yüzden cuk diye oturdu .

//sizede de bu yöntemi tavsiye ederim
d3d_transform_set_identity();// kod kısıtlaması bunun yerine sanırım {} da kullanılabiliyor.
d3d_transform_add_rotation_y(zdir);// zdir e göre y ekseni ayarı
d3d_transform_add_rotation_z(direction);// direction a göre ise kendi etrafındaki dönmesi
d3d_transform_add_translation(x+0.05,y+0.05,z);// model görünüş yeri.
d3d_model_draw(global.model_silah,2.1,2.1,-2,background_get_texture(back_silah));//model ve çıkacağı yer , + kaplaması
d3d_transform_set_identity();

// Kontrol

if keyboard_check(ord('W'))
{
motion_set(direction,2)// ileri
}
if keyboard_check(ord('S'))
{
motion_set(direction,-2)// geri
}
if keyboard_check(ord('D'))
{
x = x + lengthdir_x(2,direction - 90)// x ve y ekseni
y = y + lengthdir_y(2,direction - 90)// sağa
}
if keyboard_check(ord('A'))
{
x = x + lengthdir_x(5/2,direction + 90)// x ve y ekseni
y = y + lengthdir_y(5/2,direction + 90)// sola
}
friction=0.1//sürtünme kuvvetimiz

if mouse_check_button(mb_left)//eğer sola basarsak
{var mermi;//varible yaratsın
mermi=instance_create(obj_kamera.x,obj_kamera.y,obj_mermi)// bu varible mermi çıkarmaya eşit olsun
mermi.direction=direction+2-random(4)// merminin directionu bizim direction a eşit.
mermi.z=3+1-random(2)// merminin z si 3 ten başlayıp değişsin
mermi.speed=15// mermi hızı

}
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.