Godot'ta Yukarıdan Aşağıya Nişancı Oyunu Yaratmak

Bu eğitimde, güçlü bir açık kaynaklı oyun motoru olan Godot'u kullanarak yukarıdan aşağıya bir nişancı oyununun nasıl oluşturulacağını öğreneceksiniz. Yukarıdan aşağıya atıcılar genellikle yukarıdan aşağıya bir perspektifle hareket eden ve ateş eden, düşmanları yenmeyi ve hedefleri tamamlamayı amaçlayan bir karakteri kontrol etmeyi içerir.

Projenizi Kurma

Godot'ta yeni bir 2D proje oluşturarak başlayın. Projeniz oluşturulduktan sonra ana sahnenizi ayarlayın:

  1. Bir Oyuncu Oluşturun:
    • Oyuncu karakteriniz için bir KinematicBody2D düğümü ekleyin.
    • Oyuncu için bir hareketli grafik oluşturun ve düşmanlarla ve çevreyle doğru etkileşim için çarpışma şekillerini yapılandırın.
  2. Düşman Ekle:
    • KinematicBody2D düğümlerini veya diğer uygun düğümleri kullanarak düşman karakterleri oluşturun.
    • Düşman hareketini, saldırıyı ve oyuncunun tespitini kontrol etmek için yapay zeka davranış komut dosyaları tasarlayın.
  3. Atış Mekanizmasını Uygulayın:
    • Oyuncu atışlarını yönetmek için senaryolar yazın.
    • Mermileri fare imlecine doğru fırlatmak için fare tıklamalarını veya tuşlara basmayı algılamak için giriş olaylarını kullanın.

Kod Örneği: Oyuncu Hareketi ve Şut Çekme

extends KinematicBody2D

const MOVE_SPEED = 200
const SHOOT_SPEED = 400
var bullet_scene = preload("res://Bullet.tscn")

func _process(delta):
    # Player Movement
    var input_vector = Vector2.ZERO
    input_vector.x = Input.get_action_strength("move_right") - Input.get_action_strength("move_left")
    input_vector.y = Input.get_action_strength("move_down") - Input.get_action_strength("move_up")
    input_vector = input_vector.normalized() * MOVE_SPEED * delta
    move_and_slide(input_vector)

    # Player Shooting
    if Input.is_action_just_pressed("shoot"):
        var bullet_instance = bullet_scene.instance()
        var direction = (get_global_mouse_position() - global_position).normalized()
        bullet_instance.direction = direction
        bullet_instance.position = global_position
        get_parent().add_child(bullet_instance)
        bullet_instance.linear_velocity = direction * SHOOT_SPEED

Kodun Açıklaması

  • MOVE_SPEED: Oyuncunun hareket hızını tanımlayan sabit.
  • SHOOT_SPEED: Oyuncu tarafından atılan mermilerin hızını tanımlayan sabit.
  • bullet_scene: Mermi nesnesini içeren sahneye referans.
  • _process(delta): Oyuncunun hareketini ve çekimini güncellemek için her kareyi çalıştıran işlev.
  • Oyuncu Hareketi:move_and_slide()'u kullanarak hareket tuşlarından ("move_right", "move_left", "move_down", "move_up") gelen girdiye dayalı olarak hareketi hesaplar.
  • Oyuncu Atışı: Atış ("ateş") için girdiyi algılar ve oyuncunun konumunda bir mermi nesnesini başlatır, yönünü fare imlecine doğru ayarlar ve atış simülasyonu için hız uygular.

Oynanışı Geliştirme

Düşman yapay zekası, güçlendirmeler ve daha karmaşık seviye tasarımı ekleyerek oyununuzu genişletin. Gösterişli bir oyun deneyimi oluşturmak için ses efektleri, görsel efektler ve kullanıcı arayüzü öğeleri uygulayın.

Çözüm

Bu kod örneğiyle Godot'ta yukarıdan aşağıya bir nişancı oyununun temelini oluşturmaya başladınız. Benzersiz oyununuzu yaratmak için farklı mekanikler ve özelliklerle denemeler yapın ve daha fazla geliştirme için daha gelişmiş Godot işlevlerini keşfedin.