Dans le développement d’un jeu, les éléments aléatoires et imprévisibles peuvent grandement contribuer à l’expérience de jeu globale. Une façon particulière d’introduire un tel élément est d’utiliser des objets mobiles aléatoires, qui ajoutent une couche supplémentaire d’interaction et de défi.
Si vous travaillez avec Godot, vous pouvez obtenir cet effet en utilisant GDScript, le langage de script natif de Godot.
Configuration de votre jeu Godot
Avant de commencer, configurez une scène de jeu 2D de base dans le moteur de jeu Godot. Créez une nouvelle scène 2D et ajoutez un CharacterBody2D nœud pour le personnage du joueur. Le nœud CharacterBody2D Le nœud est l’élément principal pour représenter les personnages qui peuvent se déplacer et interagir avec leur environnement.
Le code utilisé dans cet article est disponible dans ce dépôt GitHub et est libre d’utilisation sous la licence MIT.
Ajouter deux noeuds enfants au personnage du joueur : a CollisionShape2D avec une forme rectangulaire, et un Sprite2D pour la représentation graphique du joueur.
Pour ajouter de la mobilité au personnage, vous pouvez utiliser le code GDScript suivant :
extends CharacterBody2Dvar 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)
Définir une variable, vitessepour la vitesse de déplacement de votre joueur. La vitesse processus_physique(delta) Cette fonction contrôle le mouvement du personnage en réponse aux entrées du joueur. Normalise la vitesse et la direction du personnage pour assurer un mouvement cohérent quelle que soit la direction.
Créer des objets statiques avec StaticBody2D
Ensuite, créez des objets avec lesquels votre joueur peut interagir. L’exemple suivant montre la création d’un objet statique à l’aide de la fonction StaticBody2D node :
extends StaticBody2Dfunc _ready():
var collision_shape = CollisionShape2D.new()
collision_shape.shape = RectangleShape2D.new()
add_child(collision_shape)
Ajout d’un algorithme de mouvement aléatoire pour les objets statiques
Maintenant que vos objets statiques sont prêts, il est temps d’ajouter du hasard à votre jeu. Pour ce faire, vous pouvez utiliser un simple algorithme de mouvement aléatoire :
extends StaticBody2Dvar speed = 100
var value = randf_range(-1, 1)
var direction = Vector2(value,value).normalized()
func _physics_process(delta):
position += direction * speed * delta
Définissez la vitesse de votre objet statique. Créez également un Vector2 direction et initialisez-le avec des valeurs aléatoires comprises entre -1 et 1 pour les deux axes.
Dans la fenêtre Processus_physique(delta) incrémente la position de l’objet du produit de sa direction, de sa vitesse et du delta temporel, ce qui le fait se déplacer dans la direction à la vitesse donnée.
Positions et trajectoires aléatoires pour des objets statiques
Vous pouvez augmenter le caractère aléatoire et imprévisible en faisant varier non seulement la vitesse et la direction des objets, mais aussi leurs positions et trajectoires initiales.
extends StaticBody2Dvar 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
Ici, la vitesse est une valeur aléatoire comprise entre 50 et 150. La position initiale de l’objet est déterminée de manière aléatoire à l’intérieur de la taille de la fenêtre de visualisation dans la fonction _ready() et la position de l’objet est mise à jour dans la fonction processus_physique(delta) fonctionne de la même manière que précédemment.
Réglage de la vitesse, de la direction et du caractère aléatoire
Vous pouvez concevoir des jeux plus interactifs et attrayants en manipulant la vitesse, la direction et le caractère aléatoire du mouvement des objets statiques. Vous pouvez créer ces contrôles à l’aide de GDScript :
extends StaticBody2Dvar 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()
Fonctionnalités supplémentaires pour vos objets à mouvement aléatoire
Bien que le mouvement aléatoire de base ajoute une dynamique imprévisible à votre jeu, il existe d’innombrables fonctions supplémentaires que vous pouvez ajouter pour améliorer encore votre jeu. En voici quelques exemples :
Variation des couleurs
De la même manière que pour la vitesse et la direction des objets, il est possible d’en modifier la couleur au hasard. Cela peut ajouter un aspect plus vivant et plus attrayant à votre jeu. Pour ce faire, vous pouvez modifier le paramètre moduler du sprite.
sprite.modulate = Color(randf(), randf(), randf())
Variation de taille
La modification aléatoire de la taille des objets ajoute un niveau supplémentaire de difficulté et d’imprévisibilité. Les joueurs devront constamment s’adapter aux changements de taille des objets. Vous pouvez modifier la taille d’un objet en ajustant son échelle propriété :
sprite.scale = Vector2(randf_range(0.5, 2.0), randf_range(0.5, 2.0))
Création d’objets
Au lieu d’avoir un nombre fixe d’objets mobiles aléatoires, vous pourriez mettre en place un système qui fait apparaître de nouveaux objets à intervalles réguliers ou sous certaines conditions. Cela pourrait ajouter une nouvelle couche de difficulté, car le joueur devra ajuster sa stratégie à mesure que de nouveaux objets apparaîtront à l’écran.
Durée de vie des objets
En plus de la création de nouveaux objets, vous pouvez également faire en sorte que les objets se détruisent automatiquement au bout d’un certain temps. Cela permet d’éviter que l’écran ne devienne trop encombré et de maintenir la fraîcheur du jeu.
Interactions
Pensez à ajouter des interactions spécifiques entre le joueur et les objets en mouvement. Par exemple, la collision avec certains objets pourrait augmenter le score du joueur, modifier la vitesse du joueur ou même changer l’environnement du jeu. Vous pouvez également permettre au joueur de sauter lorsqu’il se trouve sur une plateforme.
Meilleures pratiques pour l’ajout d’objets mobiles aléatoires
Lors de l’ajout d’objets mobiles aléatoires, il est important de prendre en compte quelques bonnes pratiques afin de garantir un jeu bien équilibré et attrayant :
Considérations sur les performances
Bien qu’il soit tentant d’ajouter autant d’objets que possible, n’oubliez pas que chaque objet augmente la charge de calcul du moteur de jeu. Testez toujours votre jeu sur le matériel cible pour vous assurer que les performances ne sont pas affectées.
Équilibrer l’aléatoire et la jouabilité
Si les objets aléatoires peuvent ajouter une touche d’imprévisibilité amusante, trop d’aléatoire peut conduire à la frustration. Veillez à effectuer de nombreux tests pour trouver le bon équilibre entre défi et plaisir.
Collisions et réponses
Assurez-vous que le jeu gère correctement les collisions entre le joueur et les objets. Les objets se déplaçant de manière aléatoire peuvent provoquer des scénarios de collision inattendus, il faut donc les prévoir et les tester minutieusement.
Clarté visuelle
Les objets en mouvement aléatoire doivent se détacher de l’arrière-plan et des autres éléments non interactifs. Cela permet aux joueurs de comprendre rapidement la situation du jeu et de planifier leurs actions en conséquence. Vous pouvez également ajouter des effets sonores à vos objets pour les faire ressortir.
L’impact des objets en mouvement aléatoire sur votre jeu Godot
Les objets en mouvement aléatoire peuvent contribuer de manière significative à rendre votre jeu Godot plus attrayant. Ils introduisent un élément d’imprévisibilité qui tient les joueurs en haleine. Chaque fois qu’un joueur démarre le jeu, il est accueilli par une configuration différente d’objets, ce qui augmente la rejouabilité du jeu.
De plus, comme les joueurs ne peuvent pas prédire la trajectoire des objets en mouvement, ils doivent rester concentrés et réactifs pour naviguer dans l’environnement du jeu