Etkileyici diyalog sistemiyle karakterlerinize biraz kişilik ve arka plan katın.
Oyun geliştirmede ilgi çekici oyun ve büyüleyici hikaye anlatımı, unutulmaz deneyimler yaratmanın anahtarıdır. Bunu başarmanıza yardımcı olabilecek güçlü araçlardan biri diyalog sistemidir.
İyi uygulanmış bir diyalog sistemi sayesinde karakterler oyuncuyla iletişim kurabilir, bilgi paylaşabilir ve etkileşime girebilir, bu da oyununuza derinlik ve sürükleyicilik katabilir.
Godot Oyununuzu Kurma
Oyununuzun temelini oluşturarak başlayın. Bu örnek için, ok tuşlarını kullanarak hareket edebilen, kontrol edilebilir bir karaktere sahip basit bir 2B ortam oluşturun.
Bu makalede kullanılan kod burada mevcuttur GitHub deposu ve MIT lisansı kapsamında kullanımınız ücretsizdir.
Oyuncu karakteriniz için yeni bir sahne oluşturarak başlayın. Bu sahnenin içine gerekli bileşenleri ekleyin. Oluşturmak KarakterBody2D Oyuncu karakterinin vücudunu temsil eden düğüm. Bir ekle Çarpışma Şekli2D Oyuncunun çarpışma alanını tanımlamak için dikdörtgen bir şekle sahiptir.
Şimdi, karakter hareketi ekle ve GDScript kullanan platformlarla etkileşim. CharacterBody2D düğümünün varsayılan komut dosyasını aşağıdaki kodla değiştirin:
extends CharacterBody2D
var speed = 300
func _physics_process(delta):
var input_dir = Vector2.ZEROif Input.is_action_pressed("ui_left"):
input_dir.x -= 1if Input.is_action_pressed("ui_right"):
input_dir.x += 1if Input.is_action_pressed("ui_up"):
input_dir.y -= 1if Input.is_action_pressed("ui_down"):
input_dir.y += 1
velocity = input_dir.normalized() * speed
move_and_collide(velocity * delta)
Bu komut dosyası, karakterinizin ok tuşu girişlerine göre sola, sağa, yukarı ve aşağı hareket etmesini sağlar. move_and_collide işlevi, karakterin platformlarla etkileşime girmesini ve çarpışmalara yanıt vermesini sağlar.
Diyalog Kutusu Ekleme
Artık diyalog sistemini oluşturmaya başlayabilirsiniz. İlk adım, karakteriniz belirli nesnelerle veya NPC'lerle etkileşime girdiğinde metni görüntüleyecek bir diyalog kutusu eklemektir.
senin içinde KarakterBody2D komut dosyasında, diyalog kutusunu ve içeriğini yönetmek için birkaç değişken daha ekleyin:
var dialogue_box: Label
var close_button: Button
var dialogue_lines: Array = ["Hello, adventurer!", "Welcome to our village."]
var current_line: int = 0
var line_timer: float = 0
diyalog kutusu Diyalog metninin görüntülenmesinden sorumlu olacak, close_button Oyuncuların gerektiğinde diyalog kutusunu kapatmasına olanak tanıyacak.
İçinde _hazır işlevi, diyalog kutusunu oluşturun ve başlatın:
func _ready():
dialogue_box = Label.new()
dialogue_box.visible = false
add_child(dialogue_box)
Diyalog Metnini Görüntüleme
Artık metni diyalog kutusunda görüntülemeye odaklanabilirsiniz. Metnin birden fazla satıra yayılmasını sağlayabilir ve metni kaydırarak her seferinde bir satırlık metni ortaya çıkarabilirsiniz.
Değiştir _fizik_süreç diyalog satırlarının görüntülenmesini sağlayan işlev:
if line_timer > 0:
line_timer -= delta
elif current_line < dialogue_lines.size():
show_next_dialogue_line()
Bu kod bölümü, line_timer 0'dan büyüktür. Eğer öyleyse, zamanlayıcıyı delta değeri kadar azaltır. Zamanlayıcı etkin değilse ve görüntülenecek daha fazla diyalog satırı varsa, show_next_dialogue_line işlev.
Uygulamak show_next_dialogue_line aşağıdaki gibi çalışır:
func show_next_dialogue_line():
dialogue_box.text = dialogue_lines[current_line]
current_line += 1
# Display each line for 3 seconds
line_timer = 3.0
Bu işlev, diyalog kutusundaki metni geçerli diyalog satırıyla günceller ve akım_satırı indeks. line_timer bir sonraki satıra geçmeden önce her satırın kısa bir süre görüntülenmesini sağlar.
Kapat Düğmesi Ekleme
Artık oyunculara diyalog kutusunu kapatma ve oyunu oynamaya devam etme olanağı verebilirsiniz. Bunu, basıldığında diyalog kutusunu gizleyen ve oyuncunun yolculuğuna devam etmesine olanak tanıyan bir kapatma düğmesiyle yapın.
Öncelikle şunu değiştirin: _hazır Kapat düğmesi oluşturma ve işlevselliğini ekleme işlevi.
func _ready():
dialogue_box = Label.new()
dialogue_box.visible = false
add_child(dialogue_box)
close_button = Button.new()
close_button.text = "Close"
close_button.position = Vector2(50, 30)
close_button.visible = false
close_button.pressed.connect(_on_close_button_pressed)
add_child(close_button)
Bu kod şunun bir örneğini oluşturur: Düğme sınıfını oluşturur ve görünümünü ve konumunu özelleştirir. Aynı zamanda şunları da birbirine bağlar: preslenmiş sinyal _on_close_button_pressed işlev.
Şimdi şunu uygula _on_close_button_pressed işlev. Bu işlevde, hem diyalog kutusunun hem de kapat düğmesinin görünürlüğünü YANLIŞ. Bu, diyalog arayüzünü oynatıcıdan etkili bir şekilde gizler.
sıfırlamayı unutmayın akım_satırı Oyuncunun bir sonraki konuşma başlatışında diyaloğun baştan başlamasını sağlamak için indeksi 0 olarak ayarlayın:
func _on_close_button_pressed():
dialogue_box.visible = false
close_button.visible = false
current_line = 0
Bu değişikliklerle oyuncular oyun dünyasını keşfetmeye veya etkileşime girmeye hazır olduklarında diyaloga girebilecek ve diyalog kutusunu kapatabilecekler.
Diyalog Sisteminiz için En İyi Uygulamalar
Aşağıdaki en iyi uygulamaları aklınızda tutarak diyalog sisteminizi geliştirmeye ve iyileştirmeye devam ederken sisteminizin oyununuzun hikaye anlatımını ve oyuncu katılımını sonuna kadar geliştirmesini sağlamaya yardımcı olacaktır kapsam.
Tutarlılık Önemlidir
Diyalog sisteminiz boyunca tutarlı bir ton, yazma stili ve kelime dağarcığı koruyun. Tutarlılık, oyuncuların karakterlerle ve oyun dünyasıyla bağlantı kurmasına yardımcı olarak kusursuz ve sürükleyici bir deneyim yaratır.
Karakter Sesleri Oluşturun
Her karakterin diyaloglarına yansıyan farklı bir sesi ve kişiliği olmalıdır. Satırlarını yazarken onların geçmişini, motivasyonlarını ve duygularını göz önünde bulundurun.
Bu farklılaşma, karakterlerinize derinlik katar ve etkileşimleri daha akılda kalıcı hale getirir. Kolayca yapabilirsiniz farklı sesler ekle Godot'taki farklı karakterler için.
Anlamlı Seçimler
Anlamlı sonuçları olan diyalog seçimlerini tasarlayın. Oyunun anlatımını, ilişkilerini ve hatta oyun mekaniğini etkileyen seçimler, oyuncuları diyalog sistemiyle etkileşime geçmeye ve kararlarına duygusal olarak yatırım yapmaya teşvik eder.
Test ve Yineleme
Yazım hatalarını, gramer hatalarını veya ilerleme hızı sorunlarını yakalamak için diyalog dizilerinizi iyice test edin. Oyunculardan geri bildirim toplamak için oyun testlerine katılın ve diyalog sisteminin sorunsuz bir şekilde akmasını ve genel oyun deneyimini geliştirmesini sağlamak için gerekli ayarlamaları yapın.
Kullanıcı Arayüzü Tutarlılığı
Diyalog sisteminin tasarımı ve sunumunun genel sistemle eşleştiğinden emin olun. Oyununuzun kullanıcı arayüzü (UI) tasarımı. Tutarlı kullanıcı arayüzü öğeleri, yazı tipleri ve renkler, oyunun sürükleyiciliğine katkıda bulunan uyumlu bir görsel deneyim yaratır.
Bu en iyi uygulamaları takip ederek, yalnızca oyununuzun anlatımını geliştirmekle kalmayıp aynı zamanda oyuncular için unutulmaz ve sürükleyici bir deneyim yaratan bir diyalog sistemi oluşturabilirsiniz.
Diyalog Sistemleriyle Godot Oyunlarınızı Yükseltiyoruz
Godot oyunlarınıza bir diyalog sistemi eklemek, oyuncu katılımını artırabilir ve hikaye anlatımınızda devrim yaratabilir. Karakterlerin iletişim kurmasını, duygularını ifade etmesini ve oyuncu kararlarına tepki vermesini sağlayarak daha sürükleyici ve etkileşimli bir oyun dünyası yaratırsınız.
Godot'nun kullanıcı dostu ortamı ve GDScript'in gücü sayesinde, oluşturabileceğiniz araçlara sahipsiniz. Oyuncuları hikayenizin içine çeken ve genel oyun deneyimini geliştiren ilgi çekici diyalog sistemleri deneyim.