Många spel innehåller någon form av fiende att slåss med. Utforska de olika sätten du kan lägga till – och finesser – fiendestrider.

Fiender spelar en avgörande roll för att göra spel spännande och utmanande för spelare. Oavsett om du skapar ett 2D-plattformsspel, ett top-down shooter eller ett rollspel, kan lägga till fiender avsevärt förbättra spelupplevelsen.

Godots användarvänliga gränssnitt och intuitiva skriptspråk, GDScript, gör processen effektiv och njutbar.

Konfigurera Godot-spelet

Innan du dyker in i fiendens skapelse, ställ in den grundläggande strukturen för ditt 2D-spel i spelmotorn Godot.

Skapa ett nytt 2D-projekt i Godot. Skapa en ny i huvudscenen KinematicBody2D nod och namnge den Spelare. Lägg till en inuti spelarnoden CollisionShape2D med en rektangelform, som kommer att vara spelarens hitbox. Lägg också till a Sprite nod som en visuell representation av spelarkaraktären.

Koden som används i den här artikeln är tillgänglig i denna GitHub-förråd och är gratis för dig att använda under MIT-licensen.

instagram viewer

Bifoga följande GDScript-kod till Spelare nod för att möjliggöra grundläggande rörelse:

extends KinematicBody2D

const SPEED = 200

func _physics_process(delta):
var motion = Vector2.ZERO

if Input.is_action_pressed("ui_right"):
motion.x += SPEED

if Input.is_action_pressed("ui_left"):
motion.x -= SPEED

if Input.is_action_pressed("ui_down"):
motion.y += SPEED

if Input.is_action_pressed("ui_up"):
motion.y -= SPEED

motion = move_and_slide(motion)

Med den här koden kan spelaren flytta åt vänster, höger, upp och ner med hjälp av piltangenterna eller WASD-tangenterna.

Skapa en enkel fiende

Nu när du har en spelarkaraktär kan du skapa en enkel fiende.

Skapa en ny scen och lägg till en StaticBody2D noden heter Fiende. Inuti fiendens nod, lägg till en CollisionShape2D nod med en cirkelform för att definiera fiendens hitbox. Lägg också till a Sprite nod för att representera fienden visuellt.

Med kollisionen inrättad kommer fienden att vara redo att interagera med spelaren och andra element i din spelvärld.

Få en fiende att följa spelaren

Att skapa fiender som följer spelaren lägger till en ny nivå av utmaning till spelet.

Skapa en ny scen för följande fiendetyp och lägg till en KinematicBody2D noden heter Följ fienden med en CollisionShape2D. Bifoga följande GDScript-kod till FollowEnemy-noden för att få den att följa spelaren:

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)

Nu den Följ fienden kommer att röra sig mot spelarens position i varje bildruta.

Lägga till fiendens kulor

Nu kan du få fienden att skjuta kulor mot spelaren. Skapa en ny scen och namnge den Bullet.tscn. Lägg till en KinematicBody2D nod till platsen. Fäst Bullet.gd skript till KinematicBody2D-noden i Bullet.tscn-scenen. Lägg till följande kod för att definiera klassen Bullet:

extends KinematicBody2D

const BULLET_SPEED = 300
var bullet_direction = Vector2.ZERO

func _physics_process(delta):
var motion = bullet_direction * BULLET_SPEED * delta
move_and_collide(motion)

func set_direction(direction):
bullet_direction = direction.normalized()

Skapa nu en ny nod för fienden med kulor och namnge den Shooting Enemy. Lägg till en inuti ShootingEnemy-noden CollisionShape2D nod med en rektangelform som hitbox.

Bifoga följande GDScript-kod till ShootingEnemy-noden för att få den att skjuta kulor:

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)

Fienden kommer nu med jämna mellanrum att skjuta kulor mot spelarens position. Använd en villkorlig om påstående för att kontrollera om shoot_timer är mindre än 0. Om det är det, skjut då kulan.

Slumpmässigt rörlig fiende

Förutom fiender som följer efter eller skjuter på spelaren, kan en fiende som rör sig slumpmässigt injicera ett element av oförutsägbarhet och utmaning i ditt spel. Att skapa en fiende med slumpmässiga rörelsemönster kräver en kombination av enkel logik och generering av slumptal.

Börja med att skapa en ny scen och lägg till en KinematicBody2D noden heter Random Enemy. Skapa ett nytt skript med namnet RandomEnemy.gd och anslut den till RandomEnemy-noden. Skriptet kommer att hantera logiken för slumpmässiga rörelser.

extends KinematicBody2D

const MOVE_SPEED = 100
const MOVE_INTERVAL_MIN = 1.0
const MOVE_INTERVAL_MAX = 3.0

var move_timer = 0.0
var move_interval = 0.0
var move_direction = Vector2.ZERO

func _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 -= delta

if move_timer <= 0.0:
choose_new_direction()

var motion = move_direction * MOVE_SPEED * delta
move_and_collide(motion)

Inklusive ytterligare funktioner

Det finns många ytterligare funktioner du kan lägga till dina fiender för att göra spelandet mer intressant.

Boss strider

Bossstrider fungerar som kulissögonblick i ditt spel och ger minnesvärda och utmanande möten som testar spelarnas färdigheter och uthållighet. Bossfiender är vanligtvis större och kraftfullare än vanliga fiender, vilket kräver att spelare använder specifika strategier och taktiker för att besegra dem.

Dynamisk fiendes spawning

Implementera ett dynamiskt spawning-system som justerar fiendens möten baserat på spelarens prestation, plats eller händelser i spelet. Detta skapar en mer lyhörd och personlig spelupplevelse.

Miljöanpassning

Skapa fiender som kan anpassa sig till miljön, till exempel fiender som kan flyga, simma eller klättra på väggar. Denna mångsidighet öppnar upp för nya spelmöjligheter och utmanar spelare att navigera i olika terränger.

Fiendens svagheter och motstånd

Tilldela specifika svagheter och motstånd till fiender, uppmuntra spelare att experimentera med olika tillvägagångssätt och taktik. Vissa fiender kan vara sårbara för vissa attacker eller element, medan andra är immuna eller resistenta.

Fiendens anpassning och beteendevariationer

Lägg till en nivå av oförutsägbarhet genom att ge fiender randomiserade beteendevariationer. Till exempel kan en fiende ha olika attackmönster eller rörelsehastigheter i olika genomspelningar, vilket håller spelet fräscht och omspelbart.

Att inkludera en mängd av dessa ytterligare funktioner kan berika ditt spels fiendedesign, vilket gör varje möte unikt och minnesvärt för spelare.

Kom ihåg att även om det kan vara spännande att introducera ny mekanik, är det avgörande att upprätthålla balans och sammanhållning i ditt spels övergripande design.

Bästa metoder för att skapa fiender

När du skapar fiender i ditt Godot-spel, överväg följande bästa praxis:

Tydlig visuell kommunikation

Använd distinkta fiendedesigner som sticker ut från miljön för att göra fiender lätt att känna igen.

Överväg att använda färgkodning eller unika silhuetter för att särskilja fiendetyper. Se till att fiendens animationer och visuella effekter förstärker deras beteenden och attacker.

Svårighet att balansera

Introducera gradvis fiender med ökande komplexitet allt eftersom spelaren går vidare genom spelet. Testa fiendens möten med spelare på olika nivåer för att säkerställa att utmaningar är lämpliga för alla spelare. Undvik plötsliga svårighetstoppar som kan frustrera spelare.

Undviker billiga bilder

Designa fiender med attacker som spelaren kan undvika eller blockera, vilket ger dem en chans att reagera. Använd en rättvis hitbox för fiendens attacker, undvik attacker som träffar bortom deras visuella representation. Använd varningsskyltar eller ledtrådar för att antyda farliga attacker.

Speltestning och iteration

Testa regelbundet fiendens möten under utvecklingen för att utvärdera deras roliga faktor och svårighetsgrad. Samla in feedback från spelare och använd den för att finjustera fiendens beteenden, styrkor och svagheter.

Ljudeffekter

Ljudeffekter spelar en avgörande roll för att skapa en uppslukande och fängslande spelmiljö. När en fiende tar en träff, lägg till lämpligt upphovsrättsfria ljudeffekter för att förstärka känslan av påverkan och engagemang i strid.

Ditt spel kan ackompanjera varje slag eller träff med distinkta ljudsignaler som motsvarar typen av attack och fiendens egenskaper.

Gör Godot-spel mer engagerande med fiender

Fiender är en grundläggande komponent i många spel, som ger utmaningar, hinder och en känsla av prestation när de besegras. Genom att lägga till olika typer av fiender med olika beteenden, hälsopoäng och skjutmekanik kan du skapa olika och engagerande spelupplevelser för spelare.

Kom ihåg att balansera svårighetsgraden, ge visuell och auditiv feedback och testa dina fiender grundligt för att ge spelarna en njutbar och givande spelupplevelse.