De nombreux jeux incluent une sorte d'ennemi à combattre. Explorez les différentes façons dont vous pouvez ajouter et affiner le combat ennemi.
Les ennemis jouent un rôle crucial dans la création de jeux passionnants et stimulants pour les joueurs. Que vous créiez un jeu de plateforme 2D, un jeu de tir en vue de dessus ou un jeu de rôle, l'ajout d'ennemis peut considérablement améliorer l'expérience de jeu.
L'interface conviviale de Godot et le langage de script intuitif, GDScript, rendent le processus efficace et agréable.
Configurer le jeu Godot
Avant de plonger dans la création d'ennemis, configurez la structure de base de votre jeu 2D dans le moteur de jeu Godot.
Créez un nouveau projet 2D dans Godot. Dans la scène principale, créez un nouveau KinematicBody2D noeud et nommez-le Joueur. À l'intérieur du nœud du lecteur, ajoutez un CollisionShape2D avec une forme de rectangle, qui sera la hitbox du joueur. Ajoutez également un Lutin nœud comme une représentation visuelle du personnage du joueur.
Le code utilisé dans cet article est disponible dans ce Référentiel GitHub et est libre d'utilisation sous la licence MIT.
Joignez le code GDScript suivant au Joueur nœud pour activer le mouvement de base :
extends KinematicBody2D
const SPEED = 200
func _physics_process(delta):
var motion = Vector2.ZEROif Input.is_action_pressed("ui_right"):
motion.x += SPEEDif Input.is_action_pressed("ui_left"):
motion.x -= SPEEDif Input.is_action_pressed("ui_down"):
motion.y += SPEEDif Input.is_action_pressed("ui_up"):
motion.y -= SPEED
motion = move_and_slide(motion)
Avec ce code, le joueur peut se déplacer vers la gauche, la droite, le haut et le bas à l'aide des touches fléchées ou des touches WASD.
Créer un ennemi simple
Maintenant que vous avez configuré un personnage joueur, vous pouvez créer un ennemi simple.
Créez une nouvelle scène et ajoutez un StaticBody2D nœud nommé Ennemi. Dans le nœud Enemy, ajoutez un CollisionShape2D nœud avec une forme de cercle pour définir la hitbox de l'ennemi. Ajoutez également un Lutin nœud pour représenter visuellement l'ennemi.
Une fois la collision configurée, l'ennemi sera prêt à interagir avec le joueur et d'autres éléments de votre monde de jeu.
Faire en sorte qu'un ennemi suive le joueur
Créer des ennemis qui suivent le joueur ajoute un nouveau niveau de défi au jeu.
Créez une nouvelle scène pour le type d'ennemi suivant et ajoutez un KinematicBody2D nœud nommé Suivre l'ennemi avec un CollisionShape2D. Attachez le code GDScript suivant au nœud FollowEnemy pour qu'il suive le joueur :
extends KinematicBody2D
const SPEED = 100
func _physics_process(delta):
var player = get_parent().get_node("Player")
var player_position = player.global_position
var enemy_position = global_position
var direction = player_position - enemy_position
direction = direction.normalized()
var motion = direction * SPEED * delta
move_and_collide(motion)
Maintenant le Suivre l'ennemi se déplacera vers la position du joueur dans chaque image.
Ajout de balles ennemies
Maintenant, vous pouvez faire en sorte que l'ennemi tire des balles vers le joueur. Créez une nouvelle scène et nommez-la Puce.tscn. Ajouter un KinematicBody2D nœud à la scène. Attachez le Puce.gd script au nœud KinematicBody2D dans la scène Bullet.tscn. Ajoutez le code suivant pour définir la classe Bullet :
extends KinematicBody2D
const BULLET_SPEED = 300
var bullet_direction = Vector2.ZEROfunc _physics_process(delta):
var motion = bullet_direction * BULLET_SPEED * delta
move_and_collide(motion)
func set_direction(direction):
bullet_direction = direction.normalized()
Maintenant, créez un nouveau nœud pour l'ennemi avec des balles et nommez-le TirEnnemi. Dans le nœud ShootingEnemy, ajoutez un CollisionShape2D nœud avec une forme de rectangle comme hitbox.
Attachez le code GDScript suivant au nœud ShootingEnemy pour lui faire tirer des balles :
extends KinematicBody2D
const SPEED = 100
const SHOOT_DELAY = 1.5
var shoot_timer = SHOOT_DELAY# Import the Bullet scene
const BulletScene = preload("res://Bullet.tscn")func _physics_process(delta):
# Shooting logic
shoot_timer -= delta
if shoot_timer <= 0:
shoot_timer = SHOOT_DELAY
var bullet_instance = BulletScene.instance()
bullet_instance.global_position = global_position
bullet_instance.set_direction(direction)
get_parent().add_child(bullet_instance)
L'ennemi tirera désormais périodiquement des balles vers la position du joueur. Utiliser un conditionnel si déclaration pour vérifier si le shoot_timer est inférieur à 0. Si c'est le cas, tirez la balle.
Ennemi se déplaçant au hasard
En plus des ennemis qui suivent ou tirent sur le joueur, un ennemi se déplaçant au hasard peut injecter un élément d'imprévisibilité et de défi dans votre jeu. Créer un ennemi avec des mouvements aléatoires nécessite une combinaison de logique simple et de génération de nombres aléatoires.
Commencez par créer une nouvelle scène et ajoutez un KinematicBody2D nœud nommé Ennemi aléatoire. Créez un nouveau script nommé RandomEnemy.gd et attachez-le au nœud RandomEnemy. Le script gérera la logique de mouvement aléatoire.
extends KinematicBody2D
const MOVE_SPEED = 100
const MOVE_INTERVAL_MIN = 1.0
const MOVE_INTERVAL_MAX = 3.0var move_timer = 0.0
var move_interval = 0.0
var move_direction = Vector2.ZEROfunc _ready():
choose_new_direction()func choose_new_direction():
move_interval = rand_range(MOVE_INTERVAL_MIN, MOVE_INTERVAL_MAX)
move_timer = move_interval
move_direction = Vector2(randf(), randf()).normalized()func _physics_process(delta):
move_timer -= deltaif move_timer <= 0.0:
choose_new_direction()
var motion = move_direction * MOVE_SPEED * delta
move_and_collide(motion)
Inclure des fonctionnalités supplémentaires
Il existe de nombreuses fonctionnalités supplémentaires que vous pouvez ajouter à vos ennemis pour rendre le jeu plus intéressant.
Combats de boss
Les batailles de boss constituent des moments culminants dans votre jeu, offrant des rencontres mémorables et stimulantes qui testent les compétences et la persévérance des joueurs. Les boss ennemis sont généralement plus gros et plus puissants que les ennemis ordinaires, ce qui oblige les joueurs à utiliser des stratégies et des tactiques spécifiques pour les vaincre.
Frai dynamique des ennemis
Implémentez un système d'apparition dynamique qui ajuste les rencontres ennemies en fonction des performances, de l'emplacement ou des événements du jeu du joueur. Cela crée une expérience de jeu plus réactive et personnalisée.
Adaptation environnementale
Créez des ennemis capables de s'adapter à l'environnement, tels que des ennemis capables de voler, de nager ou d'escalader des murs. Cette polyvalence ouvre de nouvelles possibilités de gameplay et met les joueurs au défi de naviguer sur différents terrains.
Faiblesses et résistances ennemies
Attribuez des faiblesses et des résistances spécifiques aux ennemis, en encourageant les joueurs à expérimenter différentes approches et tactiques. Certains ennemis peuvent être vulnérables à certaines attaques ou éléments, tandis que d'autres sont immunisés ou résistants.
Personnalisation de l'ennemi et variations de comportement
Ajoutez un niveau d'imprévisibilité en donnant aux ennemis des variations de comportement aléatoires. Par exemple, un ennemi peut avoir des schémas d'attaque ou des vitesses de déplacement différents dans différentes parties, ce qui permet de garder le gameplay frais et rejouable.
L'inclusion d'une variété de ces fonctionnalités supplémentaires peut enrichir la conception ennemie de votre jeu, rendant chaque rencontre unique et mémorable pour les joueurs.
N'oubliez pas que même si l'introduction de nouveaux mécanismes peut être excitante, il est crucial de maintenir l'équilibre et la cohérence dans la conception globale de votre jeu.
Meilleures pratiques pour créer des ennemis
Lorsque vous créez des ennemis dans votre jeu Godot, tenez compte des bonnes pratiques suivantes :
Communication visuelle claire
Utilisez des conceptions d'ennemis distinctes qui se démarquent de l'environnement pour rendre les ennemis facilement reconnaissables.
Envisagez d'utiliser un code couleur ou des silhouettes uniques pour différencier les types d'ennemis. Assurez-vous que les animations et les effets visuels des ennemis renforcent leurs comportements et leurs attaques.
Difficulté d'équilibrage
Introduisez progressivement des ennemis avec une complexité croissante au fur et à mesure que le joueur progresse dans le jeu. Testez les rencontres ennemies avec des joueurs de différents niveaux de compétence pour vous assurer que les défis conviennent à tous les joueurs. Évitez les pics de difficulté soudains qui peuvent frustrer les joueurs.
Éviter les coups bon marché
Concevez des ennemis avec des attaques que le joueur peut esquiver ou bloquer, leur donnant une chance de réagir. Utilisez une hitbox équitable pour les attaques des ennemis, en évitant les attaques qui frappent au-delà de leur représentation visuelle. Utilisez des panneaux d'avertissement ou des indices pour faire allusion à des attaques dangereuses.
Test de jeu et itération
Testez régulièrement les rencontres ennemies pendant le développement pour évaluer leur facteur de plaisir et leur difficulté. Recueillez les commentaires des joueurs et utilisez-les pour affiner les comportements, les forces et les faiblesses de l'ennemi.
Effets sonores
Les effets sonores jouent un rôle crucial dans la création d'un environnement de jeu immersif et captivant. Lorsqu'un ennemi subit un coup, ajoutez les effets sonores libres de droit pour renforcer le sens de l'impact et de l'engagement au combat.
Votre jeu peut accompagner chaque frappe ou coup avec des signaux audio distincts qui correspondent au type d'attaque et aux caractéristiques de l'ennemi.
Rendre les jeux Godot plus engageants avec les ennemis
Les ennemis sont un élément fondamental de nombreux jeux, offrant des défis, des obstacles et un sentiment d'accomplissement lorsqu'ils sont vaincus. En ajoutant différents types d'ennemis avec des comportements, des points de santé et des mécanismes de tir variés, vous pouvez créer des expériences de jeu diverses et attrayantes pour les joueurs.
N'oubliez pas d'équilibrer la difficulté, d'offrir un retour visuel et auditif et de tester vos ennemis de manière approfondie pour offrir aux joueurs une expérience de jeu agréable et enrichissante.