Ανακαλύψτε πώς να προσθέσετε ένα απρόβλεπτο στοιχείο στο παιχνίδι σας.

Στην ανάπτυξη παιχνιδιών, στοιχεία τυχαίας και απρόβλεπτης συμπεριφοράς μπορούν να συμβάλουν σημαντικά στη συνολική εμπειρία παιχνιδιού. Ένας ιδιαίτερος τρόπος εισαγωγής ενός τέτοιου στοιχείου είναι μέσω τυχαίων κινούμενων αντικειμένων, τα οποία προσθέτουν ένα επιπλέον επίπεδο αλληλεπίδρασης και πρόκλησης.

Εάν εργάζεστε με τον Godot, μπορείτε να επιτύχετε αυτό το αποτέλεσμα χρησιμοποιώντας το GDScript, τη μητρική γλώσσα σεναρίου του Godot.

Ρύθμιση του παιχνιδιού Godot

Πριν ξεκινήσετε, δημιουργήστε μια βασική σκηνή παιχνιδιού 2D η μηχανή παιχνιδιών Γκοντό. Δημιουργήστε μια νέα δισδιάστατη σκηνή και προσθέστε ένα CharacterBody2D κόμβος για τον χαρακτήρα του παίκτη. ο CharacterBody2D Ο κόμβος είναι το κύριο στοιχείο για την αναπαράσταση χαρακτήρων που μπορούν να κινούνται και να αλληλεπιδρούν με το περιβάλλον τους.

Ο κώδικας που χρησιμοποιείται σε αυτό το άρθρο είναι διαθέσιμος σε αυτό Αποθετήριο GitHub και είναι δωρεάν για χρήση βάσει της άδειας MIT.

instagram viewer

Προσθέστε δύο θυγατρικούς κόμβους στον χαρακτήρα του προγράμματος αναπαραγωγής: α CollisionShape2D με ορθογώνιο σχήμα, και α Sprite2D για τη γραφική αναπαράσταση του παίκτη.

Για να προσθέσετε κινητικότητα στον χαρακτήρα, μπορείτε να χρησιμοποιήσετε τον ακόλουθο κώδικα GDScript:

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)

Ορίστε μια μεταβλητή, Ταχύτητα, για την ταχύτητα κίνησης της συσκευής σας. ο _physics_process (δέλτα) Η λειτουργία ελέγχει την κίνηση του χαρακτήρα σε απόκριση στις εισαγωγές του παίκτη. Κανονικοποιήστε την ταχύτητα και την κατεύθυνση του χαρακτήρα για να εξασφαλίσετε σταθερή κίνηση ανεξάρτητα από την κατεύθυνση.

Δημιουργία στατικών αντικειμένων με το StaticBody2D

Στη συνέχεια, δημιουργήστε αντικείμενα με τα οποία μπορεί να αλληλεπιδράσει ο παίκτης σας. Το ακόλουθο παράδειγμα δείχνει τη δημιουργία ενός στατικού αντικειμένου χρησιμοποιώντας το StaticBody2D κόμβος:

extends StaticBody2D

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

Προσθήκη αλγορίθμου τυχαίας κίνησης για στατικά αντικείμενα

Τώρα που τα στατικά σας αντικείμενα είναι έτοιμα, ήρθε η ώρα να προσθέσετε την τυχαιότητα στο παιχνίδι σας. Για να το κάνετε αυτό, μπορείτε να χρησιμοποιήσετε έναν απλό αλγόριθμο τυχαίας κίνησης:

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

Καθορίστε την ταχύτητα του στατικού σας αντικειμένου. Επίσης, δημιουργήστε μια κατεύθυνση Vector2 και αρχικοποιήστε την με τυχαίες τιμές μεταξύ -1 και 1 και για τους δύο άξονες.

Στο _physics_process (δέλτα) συνάρτηση, αυξάνετε τη θέση του αντικειμένου κατά το γινόμενο της κατεύθυνσης, της ταχύτητας και του χρονικού δέλτα, αναγκάζοντάς το να κινηθεί προς την κατεύθυνση με τη δεδομένη ταχύτητα.

Τυχαίες θέσεις και τροχιές για στατικά αντικείμενα

Μπορείτε να αυξήσετε την τυχαιότητα και το απρόβλεπτο όχι μόνο μεταβάλλοντας την ταχύτητα και την κατεύθυνση των αντικειμένων αλλά και τις αρχικές τους θέσεις και τροχιές.

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

Εδώ η ταχύτητα είναι μια τυχαία τιμή μεταξύ 50 και 150. Η αρχική θέση του αντικειμένου προσδιορίζεται τυχαία εντός του μεγέθους της θύρας προβολής στο _έτοιμος() συνάρτηση και η θέση του αντικειμένου ενημερώνεται στο _physics_process (δέλτα) λειτουργούν όπως πριν.

Ρύθμιση ταχύτητας, κατεύθυνσης και τυχαίας

Μπορείτε να σχεδιάσετε πιο διαδραστικό και συναρπαστικό παιχνίδι χειραγωγώντας την ταχύτητα, την κατεύθυνση και την τυχαιότητα της κίνησης για στατικά αντικείμενα. Μπορείτε να δημιουργήσετε αυτά τα στοιχεία ελέγχου χρησιμοποιώντας το GDScript:

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()

Πρόσθετες λειτουργίες για τα τυχαία κινούμενα αντικείμενα σας

Ενώ η βασική τυχαία κίνηση προσθέτει μια απρόβλεπτη δυναμική στο παιχνίδι σας, υπάρχουν αμέτρητα πρόσθετα χαρακτηριστικά που θα μπορούσατε να προσθέσετε για να βελτιώσετε περαιτέρω το παιχνίδι σας. Μερικά παραδείγματα περιλαμβάνουν:

Παραλλαγή χρώματος

Παρόμοια με τον τρόπο που τυχαιοποιήσατε την ταχύτητα και την κατεύθυνση των αντικειμένων, μπορείτε επίσης να τυχαιοποιήσετε τα χρώματά τους. Αυτό μπορεί να προσθέσει μια πιο ζωντανή και οπτικά ελκυστική πτυχή στο παιχνίδι σας. Μπορείτε να το κάνετε αυτό αλλάζοντας το μετατονίζω ιδιοκτησία του ξωτικού.

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

Παραλλαγή μεγέθους

Η τυχαία αλλαγή του μεγέθους των αντικειμένων προσθέτει άλλο ένα επίπεδο δυσκολίας και απρόβλεπτου. Οι παίκτες θα πρέπει να προσαρμόζονται συνεχώς στα μεταβαλλόμενα μεγέθη των αντικειμένων. Μπορείτε να αλλάξετε το μέγεθος ενός αντικειμένου προσαρμόζοντάς το κλίμακα ιδιοκτησία:

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

Αναπαραγωγή αντικειμένων

Αντί να έχετε έναν σταθερό αριθμό τυχαίων κινούμενων αντικειμένων, θα μπορούσατε να εφαρμόσετε ένα σύστημα που δημιουργεί νέα αντικείμενα σε τακτά χρονικά διαστήματα ή υπό ορισμένες συνθήκες. Αυτό θα μπορούσε να προσθέσει ένα νέο επίπεδο δυσκολίας, καθώς ο παίκτης θα πρέπει να προσαρμόσει τη στρατηγική του καθώς εμφανίζονται περισσότερα αντικείμενα στην οθόνη.

Διάρκεια ζωής αντικειμένου

Εκτός από την αναπαραγωγή νέων αντικειμένων, μπορείτε επίσης να βάλετε αντικείμενα να καταστρέφονται αυτόματα μετά από ένα ορισμένο χρονικό διάστημα. Αυτό μπορεί να αποτρέψει την υπερβολική ακαταστασία της οθόνης και να διατηρήσει το παιχνίδι φρέσκο.

Αλληλεπιδράσεις

Σκεφτείτε να προσθέσετε συγκεκριμένες αλληλεπιδράσεις μεταξύ του παίκτη και των κινούμενων αντικειμένων. Για παράδειγμα, η σύγκρουση με συγκεκριμένα αντικείμενα θα μπορούσε να αυξήσει το σκορ του παίκτη, να αλλάξει την ταχύτητα του παίκτη ή ακόμα και να αλλάξει το περιβάλλον του παιχνιδιού. Μπορείτε επίσης να επιτρέψτε στον παίκτη να πηδήξει όταν στέκεται σε μια εξέδρα.

Βέλτιστες πρακτικές για την προσθήκη τυχαίων κινούμενων αντικειμένων

Όταν προσθέτετε τυχαία κινούμενα αντικείμενα, είναι σημαντικό να λάβετε υπόψη μερικές βέλτιστες πρακτικές για να εξασφαλίσετε ένα ισορροπημένο, συναρπαστικό παιχνίδι:

Θέματα απόδοσης

Αν και είναι δελεαστικό να προσθέσετε όσο το δυνατόν περισσότερα αντικείμενα, να θυμάστε ότι κάθε αντικείμενο αυξάνει το υπολογιστικό φορτίο στη μηχανή του παιχνιδιού. Πάντα να δοκιμάζετε το παιχνίδι σας σε υλικό προορισμού για να βεβαιωθείτε ότι η απόδοση δεν επηρεάζεται αρνητικά.

Εξισορρόπηση τυχαίας και δυνατότητας αναπαραγωγής

Ενώ τα τυχαία αντικείμενα μπορούν να προσθέσουν διασκεδαστικό απρόβλεπτο, η υπερβολική τυχαιότητα μπορεί να οδηγήσει σε απογοήτευση. Φροντίστε να κάνετε εκτεταμένες δοκιμές για να πετύχετε τη σωστή ισορροπία μεταξύ πρόκλησης και απόλαυσης.

Συγκρούσεις και απόκριση

Βεβαιωθείτε ότι το παιχνίδι χειρίζεται κατάλληλα τις συγκρούσεις μεταξύ του παίκτη και των αντικειμένων. Τα τυχαία κινούμενα αντικείμενα μπορεί να προκαλέσουν απροσδόκητα σενάρια σύγκρουσης, γι' αυτό προγραμματίστε τα και δοκιμάστε διεξοδικά.

Οπτική διαύγεια

Τα τυχαία κινούμενα αντικείμενα πρέπει να ξεχωρίζουν από το φόντο και άλλα μη διαδραστικά στοιχεία. Αυτό βοηθά τους παίκτες να κατανοήσουν γρήγορα την κατάσταση του παιχνιδιού και να σχεδιάσουν τις ενέργειές τους ανάλογα. Μπορείτε επίσης να προσθέστε ηχητικά εφέ στα αντικείμενα σας για να τα κάνετε να ξεχωρίζουν.

Επίδραση τυχαίων κινούμενων αντικειμένων στο παιχνίδι Godot σας

Τα τυχαία κινούμενα αντικείμενα μπορούν να συμβάλουν σημαντικά στο να κάνετε το παιχνίδι Godot πιο ελκυστικό. Εισάγουν ένα στοιχείο απρόβλεπτου που κρατά τους παίκτες σε εγρήγορση. Κάθε φορά που ένας παίκτης ξεκινά το παιχνίδι, θα τον υποδέχεται με διαφορετική διαμόρφωση αντικειμένων, αυξάνοντας τη δυνατότητα αναπαραγωγής του.

Επιπλέον, καθώς οι παίκτες δεν μπορούν να προβλέψουν τη διαδρομή των κινούμενων αντικειμένων, πρέπει να παραμείνουν συγκεντρωμένοι και να ανταποκρίνονται για να πλοηγηθούν στο περιβάλλον του παιχνιδιού