Oyununuza öngörülemeyen bir öğeyi nasıl ekleyeceğinizi keşfedin.

Oyun geliştirmede, rastgelelik ve öngörülemezlik unsurları, genel oyun deneyimine büyük ölçüde katkıda bulunabilir. Böyle bir öğeyi tanıtmanın özel bir yolu, fazladan bir etkileşim ve meydan okuma katmanı ekleyen rastgele hareket eden nesnelerdir.

Godot ile çalışıyorsanız, bu efekti Godot'un yerel betik dili olan GDScript'i kullanarak elde edebilirsiniz.

Godot Oyununuzu Kurmak

Başlamadan önce, temel bir 2D oyun sahnesi kurun. Godot oyun motoru. Yeni bir 2B sahne oluşturun ve KarakterBody2D oyuncu karakteri için düğüm. bu KarakterBody2D düğüm, hareket edebilen ve çevreleriyle etkileşime girebilen karakterleri temsil eden ana öğedir.

Bu makalede kullanılan kod bu makalede mevcuttur. GitHub deposu ve MIT lisansı altında ücretsiz olarak kullanabilirsiniz.

Oyuncu karakterine iki alt düğüm ekleyin: a Çarpışma Şekli2D dikdörtgen bir şekle sahip ve Sprite2D oyuncunun grafik gösterimi için.

Karaktere hareketlilik eklemek için aşağıdaki GDScript kodunu kullanabilirsiniz:

instagram viewer
extends CharacterBody2D

var speed = 200

func _physics_process(delta):
var velocity = Vector2()

if Input.is_action_pressed('ui_right'):
velocity.x += 1

if Input.is_action_pressed('ui_left'):
velocity.x -= 1

if Input.is_action_pressed('ui_down'):
velocity.y += 1

if Input.is_action_pressed('ui_up'):
velocity.y -= 1

velocity = velocity.normalized() * speed
move_and_collide(velocity * delta)

Bir değişken tanımlayın, hız, oynatıcınızın hareket hızı için. bu _fizik_işlem (delta) işlevi, oyuncu girişlerine yanıt olarak karakterin hareketini kontrol eder. Yönden bağımsız olarak tutarlı hareket sağlamak için karakterin hızını ve yönünü normalleştirin.

StaticBody2D ile Statik Nesneler Oluşturma

Ardından, oynatıcınızın etkileşime girebileceği nesneler oluşturun. Aşağıdaki örnek, kullanılarak statik bir nesnenin oluşturulmasını gösterir. StatikBody2D düğüm:

extends StaticBody2D

func _ready():
var collision_shape = CollisionShape2D.new()
collision_shape.shape = RectangleShape2D.new()
add_child(collision_shape)

Statik Nesneler İçin Rastgele Hareket Algoritması Ekleme

Artık statik nesneleriniz hazır olduğuna göre, oyununuza rastgelelik eklemenin zamanı geldi. Bunu yapmak için basit bir rastgele hareket algoritması kullanabilirsiniz:

extends StaticBody2D

var speed = 100
var value = randf_range(-1, 1)
var direction = Vector2(value, value).normalized()

func _physics_process(delta):
position += direction * speed * delta

Statik nesnenizin hızını tanımlayın. Ayrıca, bir Vector2 yönü oluşturun ve her iki eksen için -1 ile 1 arasında rasgele değerlerle başlatın.

İçinde _fizik_işlem (delta) işlevi, nesnenin konumunu yönünün, hızının ve zaman deltasının çarpımı ile artırarak, verilen hızda yönde hareket etmesine neden olur.

Statik Nesneler İçin Rastgele Konumlar ve Yörüngeler

Nesnelerin yalnızca hızını ve yönünü değil, aynı zamanda başlangıç ​​konumlarını ve yörüngelerini de değiştirerek rastgeleliği ve öngörülemezliği artırabilirsiniz.

extends StaticBody2D

var speed = randf_range(50, 150)
var value = randf_range(-1, 1)
var direction = Vector2(value, value).normalized()

func _ready():
var val1 = randf_range(0, get_viewport().size.x)
var val2 = randf_range(0, get_viewport().size.y)
position = Vector2(val1, val2)

func _physics_process(delta):
position += direction * speed * delta

Burada hız 50 ile 150 arasında rastgele bir değerdir. Nesnenin başlangıç ​​konumu, görüntü penceresinin boyutu içinde rastgele belirlenir. _hazır() işlevi ve nesnenin konumu güncellenir _fizik_işlem (delta) daha önce olduğu gibi çalışır.

Hızı, Yönü ve Rastgeleliği Ayarlama

Statik nesneler için hareketin hızını, yönünü ve rastgeleliğini değiştirerek daha etkileşimli ve ilgi çekici bir oyun tasarlayabilirsiniz. GDScript kullanarak bu kontrolleri oluşturabilirsiniz:

extends StaticBody2D

var speed = randf_range(50, 150)
var value = randf_range(-1, 1)
var direction = Vector2(value, value).normalized()
var speed_variation_rate = 0.5
var direction_variation_rate = 0.5

func _ready():
var val1 = randf_range(0, get_viewport().size.x)
var val2 = randf_range(0, get_viewport().size.y)
position = Vector2(val1, val2)

func _physics_process(delta):
randomize_speed_and_direction()
position += direction * speed * delta

func randomize_speed_and_direction():
if randf() < speed_variation_rate:
speed = randf_range(50, 150)

if randf() < direction_variation_rate:
direction = Vector2(value, value).normalized()

Rastgele Hareket Eden Nesneleriniz İçin Ek Özellikler

Temel rastgele hareket, oyununuza öngörülemeyen bir dinamik katarken, oyununuzu daha da geliştirmek için ekleyebileceğiniz sayısız ek özellik vardır. Bazı örnekler şunları içerir:

Renk çeşitliliği

Nesnelerin hızını ve yönünü rastgele belirlediğinize benzer şekilde, renklerini de rastgele ayarlayabilirsiniz. Bu, oyununuza daha canlı ve görsel olarak çekici bir özellik katabilir. değiştirerek bunu yapabilirsiniz. modüle etmek sprite özelliği.

sprite.modulate = Color(randf(), randf(), randf())

Boyut Değişimi

Nesnelerin boyutunu rastgele değiştirmek, başka bir zorluk ve öngörülemezlik düzeyi ekler. Oyuncuların, nesnelerin değişen boyutlarına sürekli olarak uyum sağlamaları gerekecektir. Bir nesnenin boyutunu ayarlayarak değiştirebilirsiniz. ölçek mülk:

sprite.scale = Vector2(randf_range(0.5, 2.0), randf_range(0.5, 2.0))

Nesne Oluşturma

Sabit sayıda rastgele hareket eden nesneye sahip olmak yerine, düzenli aralıklarla veya belirli koşullar altında yeni nesneler üreten bir sistem uygulayabilirsiniz. Bu, ekranda daha fazla nesne göründükçe oyuncunun stratejisini ayarlaması gerekeceğinden, yeni bir zorluk katmanı ekleyebilir.

Nesne Ömrü

Yeni nesneler oluşturmanın yanı sıra, nesnelerin belirli bir süre sonra otomatik olarak kendilerini yok etmelerini de sağlayabilirsiniz. Bu, ekranın fazla dağınık olmasını önleyebilir ve oyunu taze tutabilir.

Etkileşimler

Oynatıcı ve hareketli nesneler arasında belirli etkileşimler eklemeyi düşünün. Örneğin, belirli nesnelerle çarpışma, oyuncunun puanını artırabilir, oyuncunun hızını değiştirebilir ve hatta oyun ortamını değiştirebilir. ayrıca yapabilirsin oyuncunun zıplamasına izin ver bir platform üzerinde dururken.

Rastgele Hareket Eden Nesneler Eklemek İçin En İyi Uygulamalar

Rastgele hareket eden nesneler eklerken, dengeli ve ilgi çekici bir oyun sağlamak için birkaç en iyi uygulamayı göz önünde bulundurmak önemlidir:

Performansla İlgili Hususlar

Mümkün olduğu kadar çok nesne eklemek cazip gelse de, her nesnenin oyun motorundaki hesaplama yükünü artırdığını unutmayın. Performansın olumsuz etkilenmediğinden emin olmak için oyununuzu her zaman hedef donanımda test edin.

Rastgelelik ve Oynanabilirliği Dengeleme

Rastgele nesneler eğlenceli bir öngörülemezlik ekleyebilirken, çok fazla rastgelelik hayal kırıklığına yol açabilir. Zorluk ve keyif arasında doğru dengeyi kurmak için kapsamlı bir şekilde test ettiğinizden emin olun.

Çarpışmalar ve Tepki

Oyunun, oyuncu ile nesneler arasındaki çarpışmaları uygun şekilde ele aldığından emin olun. Rastgele hareket eden nesneler beklenmedik çarpışma senaryolarına neden olabilir, bu nedenle bunları planlayın ve iyice test edin.

Görsel Netlik

Rastgele hareket eden nesneler, arka plandan ve diğer etkileşimli olmayan öğelerden ayrılmalıdır. Bu, oyuncuların oyun durumunu hızlı bir şekilde anlamalarına ve eylemlerini buna göre planlamalarına yardımcı olur. ayrıca yapabilirsin ses efektleri ekle öne çıkmalarını sağlamak için nesnelerinize.

Rastgele Hareket Eden Nesnelerin Godot Oyununuz Üzerindeki Etkisi

Rastgele hareket eden nesneler, Godot oyununuzu daha ilgi çekici hale getirmeye önemli ölçüde katkıda bulunabilir. Oyuncuları tetikte tutan bir öngörülemezlik unsuru getiriyorlar. Bir oyuncu oyuna her başladığında, onları farklı bir nesne konfigürasyonuyla karşılayacak ve tekrar oynanabilirliğini artıracaktır.

Ayrıca, oyuncular hareket eden nesnelerin yolunu tahmin edemedikleri için, oyun ortamında gezinmek için odaklanmış ve duyarlı kalmaları gerekir.