Kordinat Oyunları(DERS)

Users who are viewing this thread

oguzcan

1. Scene_prop'un pozisyonunu Alma

(scene_prop_get_instance,":cube_prop","spr_cube",0),

scene_prop_get_instance komutu scene propa örnek göstermek amacını taşır. En azıncan ben öyle tarif ediyorum. Pozisyonunu almadan önce örnek göstermezsek oyun içinde bazı hoş olmayan kırmızı stringler alabiliyoruz. Senaryo modunun resim kısımında vardı.

Yeşil ile gösterdiğim rakam ("0") o proptan kaç adet olduğunu söylüyor. Bilgisayar sistemine göre 0 dan başlıyor (0=1,1=2 gibi).
Mavi ile gösterdiğim ise prop'un referans adı.
Kırmızı ile gösterdiğim ise örneğin kaydedileceği değişkeni belirtiyor.


(prop_instance_get_position, 2, :cube_prop"),

prop_instance_get_position komutu ise örneğin pozisyonu almak içindir.

Kırmızı ile gösterdiğim. Pozisyon numarasıdır. Dön veya Git komutunu verirken bu pozisyon numarasını kullanırız.
Mavi ile gösterdiğim ise propun örnekte gösterilen adı. Örnek alınırken gösterilenle tutması gerekir. Yoksa hiç bir işe yaramaz.

İşte hepsi bu "spr_cube" propunun scene içindeki pozisyonunu almayı öğrenmiş almış oldunuz. Oldukça basit ve zevkli...
 
Gerçekten çok yararlı bir ders. Özellikle coder olmaya niyetli arkadaşların işine yarayacaktır. Zaten hemen herkes iyi kötü model yapıyor türkçe forumda. Ama coder olmadığı için projelerde yenilikler olmuyor. Tebrik ederim kardeşim devam et.
 
Arkaşdaşlar küçük bir hata yapmışım onu düzelttim. İlgilenenler tekrar incelesin lütfen.
 
Kodlama Dersleri ve Modelleme Dersleri gibi iki ayrı başlık olabilir.
 
Pratik bir yol çizmek için güzel. Zaman kaybını önleyebilir. Fakat her zaman bu çalışır mı?
 
Evet elbette çalışır...

2.) Player'ın Pozisyonunu Alma

(get_player_agent_no, ":player_agent"),

get_player_agent_no komutu player'ın agent nosunu almak için kullanılır. Tıpkı scene_prop'un örneğini alır gibi. Mantık aynı diyebiliriz.
Kırmızı olan kısım, agent nosunu kaydedeceği değişkeni belirtiyor.

(agent_get_position, 3, ":player_agent"),

agent_get_position agent'in pozisyonunu almak için kullanılır.
Kırmızı pozisyon nosudur.
Mavi olan ise az önce aldığımız agent nosunun kaydedildiği değişkendir.
 
3.) Prop'u Player'a Gönderme

(prop_instance_animate_to_position,":cube_prop",3,1000),

Kırmızı ile gösterilen :cube_prop 1. derste örneği alınan spr_cube'nin örneğidir. Bu kısıma hareket ettirmek istediğimiz prop'un örnek ismini giriyoruz.
Mavi ile gösterilen kısım 1. kısımdaki :cube_prop örneğinin hangi pozisyon numarasına gideceğini anlatıyor. 2. derste 3 no'su player için kullanılmış.
Yeşil ile gösterilen hareketin kaç saniye içerisinde tamamlanacağını söylüyor. 10 girilirse 0.1 sn, 100 girilirse 1 sn, 1000 oluncada 10 sn.

Bu dersin devamını ben yapıcam.
 
:lol:

4.) Pozisyon Numaralarının Kordinatlarını Değiştirme

(position_move_z,3,-200),

Kırmızı Player'ın pozisyon numarasıdır. Ancak onda x,y ve z kordinatlarında oynama yapabiliriz. Bu player'ın yerini değiştirmez. Sadece ona gönderilen şeyler değiştirilmiş şekline giderler. Senaryo modundaki at arabası örneği gibi. Yani anladığınız ya da anlayamadığınız kadarıyla, bu kısıma kordinatlarını değiştirmek istediğimiz pozisyon numarasını giriyoruz.

Mavi yeşil kısımda gördüğünüz Z derecesinde kordinata ne kadar ekleneceğini gösteriyor. Buraya santimetre değerinden yazmalıyız. Alttaki resimden referans alabilirsiniz. :mrgreen:

Yeşil kısıma position_move_z yerine, position_move_x veya position_move_y yazılabilir. Ancak position_rotate_x, y veya z yazılırsa. Herşey yine aynı olur ancak Mavi kısıma döndürülecek derece yazılır. Santimetre'ler değil.




(prop_instance_animate_to_position,":cube_prop",3,1000),

Az önce yaptığımızı
Code:
(prop_instance_animate_to_position,":cube_prop",3,1000),
'dan önce koyunca :cube_prop player'a yine gider ancak. z kordinatında player'ın -200 Z ötesinde durur.
 
5.) İki Pozisyon Numarasının Arasındaki Mesafeyi Ölçme

(get_distance_between_positions,"$cube_distance",2,3),

Kırmızı ile gösterilen, ölçülen mesafenin nereye kaydedileceğidir. Buraya değişken cinsinden birşey yazıyoruz.
Mavi ile gösterilen, arasındaki mesafenin ölçüleceği iki pozisyon numarasından birincisi.
Yaşil ile gösterilen, arasındaki mesafenin ölçüleceği iki pozisyon numarasından ikincisi.
 
oğuzcanın dersleri çok yararlydı devam edilmesi hoş..şu an için pek bişey anlamıyorum bu derslerden ama kodlama üzerine yoğunlaştığımda yararlı olacaklardır heralde sağolasın izocam
 
Bunları bir entry point'e gönderebiliyor muyuz? (sorduğumu denerken player'a gemi göndermiştim ama şuursuzca yapmıştım bir daha yapamadım ve benim adam yaralanmıştı)

Bunu hazırlaman çok iyi oldu.

 
6.) Entry Point pozisyonu Almak

(entry_point_get_position,4,22),

Kırmızı ile gösterilen entry point'in pozisyonunun kaydedileceği pozisyon numarasıdır. Aynı template'de bunların çakışmaması gerekir.

Mavi ile gösterilen pozisyonu alınacak olan entry point'in numarasıdır.

Senaryo modundaki gibi bir değirmen yapmak için gerekli kodları verek de yönlendiricem sizi. Ama önce birlikte denemeler yapacağız.
 
7.) Tam Anlamıyla Prop'a Hakim Olmak.

Bu sefer kırmızı, mavi olayını kullanmayacağım, zaten herşeyi öğrendiniz. Bu sefer diğer derslerle bağlantıda olmayacak. Bunu tamamen tek düşünün.

(0.1, 0, 0,[(eq,"$job_one_done",0)],             #0,1 saniyede işlem tekrarlanacak anlamına geliyor.
        [
     (scene_prop_get_instance,":cube_prop","spr_cube",0),
     (prop_instance_get_position, 1, ":cube_prop"),
     (entry_point_get_position,2,2),
     (get_player_agent_no, ":player_agent"),
     (agent_get_position, 4, ":player_agent"),
     (get_distance_between_positions, "$player_distance_with_cube", 1, 4),
           (try_begin),
               (lt,"$player_distance_with_cube",500),    #lt, küçük ise anlamına gelir.
               (assign,"$job_one_done",1),
               (prop_instance_animate_to_position,":cube_prop",2,1000),
           (else_try),
               (assign,"$job_one_done",0),
           (try_end),
            ]),
(0.1, 0, 0,[(eq,"$job_two_done",0),(eq,"$job_one_done",1)],           eq, eşittir anlamına gelir.
        [
     (scene_prop_get_instance,":cube_prop","spr_cube",0),
     (prop_instance_get_position, 1, ":cube_prop"),
     (entry_point_get_position,2,2),
     (entry_point_get_position,3,3),
     (get_distance_between_positions, "$cube_distance_with_entry_point_2", 1, 2),
           (try_begin),
               (lt,"$cube_distance_with_entry_point_2",200),   
               (assign,"$job_two_done",1),
               (prop_instance_animate_to_position,":cube_prop",3,1000),
           (else_try),
               (assign,"$job_two_done",0),
           (try_end),
            ]),
(0.1, 0, 0,[(eq,"$job_two_done",1),(eq,"job_three_done",0)],           
        [
     (scene_prop_get_instance,":cube_prop","spr_cube",0),
     (prop_instance_get_position, 1, ":cube_prop"),
     (entry_point_get_position,3,3),
     (get_player_agent_no, ":player_agent"),
     (agent_get_position, 4, ":player_agent"),
     (get_distance_between_positions, "$cube_distance_with_entry_point_3", 1, 3),
           (try_begin),
               (lt,"$cube_distance_with_entry_point_3",200),   
               (assign,"$job_three_done",1),
               (prop_instance_animate_to_position,":cube_prop,4,100),
           (else_try),
               (assign,"$job_three_done",0),
           (try_end),
            ]),

Sanırım hepsi bu kadar. Anlatayım şimdi. Küp'ümüz beklerken player, 500 cm yakınına giderse. Cube entry_point_2'ye kaçacak. Oraya varınca entry_point_3'e. Orayada varınca, Adamımıza geri dönecek. Adamımız nerede olursa olsun. Adama varınca da tekrar 2'ye gidecek. Bu şekilde tekrar edecek sürekli.
 
8.) Değirmen Yapımı.

Bunu Senaryo Modundan kopyaladım. Oğuz Can'ın yaptığı değirmen tam anlamıyla mükemmel. Ne hızlanıyor nede yavaşlıyor. Şunu da eklemek istiyorum. 5 saniyede 90 derece dönüyor. 20 saniyede 360 derece döndürebilirdi. İlk başta öyle denediğindende adım gibi eminim. :lol: ama 5 saniyede 90 derece yapmakla kusursuz bir değirmen elde etmiş. Dönme hızı ne artıyor nede azalıyor. 10 saniyede 180 derece döndürseydi işlem garipleşecekti. İlk 5 saniye normal hızda dönecek ve geri kalan 5 saniye boyunca sürekli hız kaybedecek. Taki tur tamamlanana kadar. Bunun neden olduğunu açıklayamam. Oğuz Can'da açıklayamaz.



      (5, 0, 0, [],                        #işlem 5 saniyede bir tekrarlanıyor.
        [
            (scene_prop_get_instance,":mill_per_prop","spr_mill_per",0),                             değirmen pervanesinin örneği alınmış
            (prop_instance_get_position, 1, ":mill_per_prop"),                                              #değirmen pervanesi 1 numaraya pozisyonu alınmış
            (position_rotate_x, 1, 90),                                                                            #1 numaranın x pozisyonunda 90 derece değişme yapılmış
            (prop_instance_animate_to_position, ":mill_per_prop", 1, 500),                            #değirmen pervanesi kendi pozisyon numarası olan 1 e animate emri almış. Eğer siz animate emri vermezseniz. Hiçbirşey kendiliğinden animate olmaz. kordinatları değişse bile.
            ]),


Şu an için bütün dersler bitti. Benim aklıma başka birşey gelmiyor. Tabi isteyen olursa. Yaklaşıldığında açılıp kapanan kapılar, at arabası ve hareket etmesi gereken ne olursa. Rica etmeniz yeterli. :smile:


Edit: Renkli yazıları modüllerinize yapıştırmayın.
 
9.) Bir Scene'deki Troop'ları Rasgele Entry'lere Gönderme.

Pirates modundan aldım, ufak değişiklikler yaptım. Yalnız Daniel'in dediğine göre sahnede bir yerde düşman olması gerekiyormuş. Yoksa olmazmış. Ayrıca Gönderilenlerin elinde uzun menzili silah olmamasıda gerekiyormuş. Olursa gitmiyorlarmış.

(10, 0, 0, [], [
    (entry_point_get_position,20,20),
    (entry_point_get_position,21,21),
    (entry_point_get_position,22,22),
    (entry_point_get_position,23,23),
    (entry_point_get_position,24,24),
    (entry_point_get_position,25,25),  
 
    (try_for_agents,":agents"),     Bu bayağı karışık şunu nerden anlıyacak falan demeyin Bunun sayesinde dönüşüm oluyor. İşlem tekrarlanıyor tam olana kadar. Ya da öyle bişiler Bende tam olarak çözemedim.
(store_random_in_range,":random_points",20,26),    20 dahil, 26 dahil değil yani 20,21,22,23,24 ve 25'i :random_points değişkenine rasgele veriyor. Her troop için bir tane sanırım.
(agent_set_slot,":agents",1,":random"), İçimde bu kullanılmasada olur diyen bir ses var.
(agent_set_scripted_destination,":agents",":random_points"),
    (end_try),
]),
 
10.) Harry Potter Mod - Ron ve Hermione'nin Bizi Takip Etmesi.

Bunu modüllerinizde kullanmayın.

(0.1, 0, 0, [(eq,"$hermione_ron_follow",1)], [
    (try_for_agents,":agents"),
        (agent_get_troop_id,":troop_id",":agents"),
        (get_player_agent_no,":player_agent"),
        (agent_get_position,1,":player_agent"),
        (agent_get_position,2,":player_agent"),
        (position_move_y,1,-100),
        (position_move_x,1,-100),
        (position_move_y,2,-100),
        (position_move_x,2,100),
        (try_begin),
            (eq,":troop_id","trp_hermione"),
            (agent_get_position,3,":agents"),
            (agent_set_scripted_destination,":agents",1),
        (end_try),
        (try_begin),
            (eq,":troop_id","trp_ron"),
            (agent_get_position,4,":agents"),
            (agent_set_scripted_destination,":agents",2),
        (end_try),
    (end_try),
]),
 
Yahu o kadar ders hazırladık, gerçekten öğrenmek ve modunda kullanmak için okuyan kimse çıkmadı. Boşuna uğraşıyoruz sanırsam. Eline sağlık diyorsunuz hepsi o.
 
Back
Top Bottom