Skapa en ny scen för föremålet:
Collectible.Lägg till en Sprite till föremålet:
Collectible, lägg till en Sprite2D-nod och tilldela en textur (t.ex. en ikon eller annan bild) för ditt föremål.Lägg till en CollisionShape2D:
Collectible, lägg till en CollisionShape2D-nod och skapa en form som omsluter föremålet.Spara scenen:
Collectible.tscn.Skapa ett skript för Collectible:
Collectible och välj Attach Script.Skriv skriptet för insamling:
extends Area2D
signal collected # Signal för när föremålet samlas upp
func _ready() -> void:
body_entered.connect(_on_body_entered)
func _on_body_entered(body: Node) -> void:
if body.name == "Player": # Om spelaren rör vid föremålet
collected.emit() # Sänder signalen för insamling
queue_free() # Tar bort föremålet från scenen
Öppna huvudscenen:
Main.tscn).Instansiera Collectible-scenen:
Collectible.tscn i scenen för att skapa en instans.Placera föremålen:
Collectible på olika platser i scenen för att spelaren ska kunna samla dem.Anslut signalen till spelaren:
Collectible-instans i scenen.collected och anslut den till spelarens nod.Lägg till en inventarie-ruta i scenen:
UI.UI, skapa en VBoxContainer eller HBoxContainer för att hålla insamlade föremål.Programmera inventarielogik i Player:
Player.gd-skriptet och lägg till en array för inventariet: var inventory: Array[Texture2D] = [] # Lista för insamlade föremål
func add_to_inventory(item_texture: Texture2D) -> void:
inventory.append(item_texture)
update_inventory_display()
func update_inventory_display() -> void:
var inventory_ui = $UI/Inventory
for child in inventory_ui.get_children():
inventory_ui.remove_child(child)
child.queue_free() inventory_ui.clear_children() # Rensa föregående föremål
for item_texture in inventory:
var icon = Sprite2D.new()
icon.texture = item_texture
inventory_ui.add_child(icon)
Collectible till inventariet:Collectible.gd, uppdatera _on_body_entered-funktionen: func _on_body_entered(body: Node) -> void:
if body.name == "Player":
collected.emit()
body.add_to_inventory($Sprite2D.texture) # Lägg till i spelarens inventarie
queue_free()
Starta spelet och testa:
Kontrollera inventariet:
Justera och finjustera:
Nu har du en grundläggande insamlingsmekanik och ett inventariesystem som visar insamlade föremål! Nästa lektion kan vi lägga till fler avancerade funktioner, såsom att använda föremål eller visa detaljerad information om dem.