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 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ı
}
Öncelikle gene mouse sabitleme sistemini kullanıcağız.(bknz:tps)
Biz zdir 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ı
}