Godot Version
4.3
Question
I am creating a turn-based strategy rpg game I think I have set things right, but both the enemies and player wont move. Somehow thye movement function is not working(it is still printing messages. Can anyone help? Here are my scripts and screenshots:
Character
extends Area2D
signal on_health_change
signal on_die (character : Area2D)
@export var combat_actions : Array[CombatAction]
@export var opponent : Area2D
@export var me : Area2D
@export var is_player : bool
@export var character : Area2D
@export var current_health : int = 25
@export var max_health : int = 25
var start_position : Vector2
var attack_opponent : bool
var current_combat_action
var oppo_pos : int
func _ready():
combat_actions = [CombatAction.new(), CombatAction.new(), CombatAction.new()]
start_position = me.position
func _process(delta):
print("hapenning")
if attack_opponent :
me.position = me.position.move_toward(opponent.position, delta * 150)
print ("happening2")
if !attack_opponent :
position = me.position.move_toward(start_position, delta * 150)
print ("happening3")
if opponent.position.x == me.position.x :
if attack_opponent == true:
attack_opponent = false
print ("happening 4")
if is_player:
await get_tree().create_timer(1).timeout
cast_combat_action(combat_actions[2])
func cast_combat_action (combat_action : CombatAction) -> void:
current_combat_action = combat_action
if combat_action.damage > 0:
attack_opponent = true
elif combat_action.projectile_scene != null:
pass
elif combat_action.heal_amount > 0:
pass
CombatManager
extends Resource
class_name CombatAction
enum Type {
Attack,
Heal
}
@export var display_name :String
@export var action_type :Type
@export_category("Damage")
@export var damage :int
@export var projectile_scene : PackedScene
@export_category("Heal")
@export var heal_amount :int
TurnManager
extends Node
signal on_begin_turn(character : Area2D)
signal on_end_turn(character : Area2D)
@export var characters : Array[Area2D]
@export var next_turn_delay : float
@export var current_character : Area2D
var current_character_index : int = -1
var game_over : bool
func _ready():
begin_next_turn()
func begin_next_turn() -> void:
current_character_index += 1
if current_character_index == characters.size():
current_character_index = 0
current_character = characters[current_character_index]
emit_signal("on_begin_turn", current_character)
func end_turn() -> void:
emit_signal("on_end_turn", current_character)
await get_tree().create_timer(next_turn_delay).timeout
begin_next_turn()
Please note that the game isnt complete yet. Heres the player and enemy screenshots: