проблема в чем при запуске игры игрок зависает в воздухе а не понимаю в чем ошибка—the problem is that when starting the game, the player freezes in the air and I don’t understand what the error is
extends CharacterBody2D
enum {
MOVE,
ATTACK,
ATTACK2,
ATTACK3,
BLOCK,
SLIDE,
DAMAGE,
CAST,
DEATH
}
const SPEED = 150.0
const JUMP_VELOCITY = -400.0
const GRAVITY = 980
@onready var anim = $AnimatedSprite2D
@onready var animPlayer = $AnimationPlayer
var health = 100
var gold = 0
var state: = MOVE
var run_speed = 1
var combo = false
var attack_cooldown = false
var player_pos
func _ready() → void:
Signals.connect(“enemy_attack”, Callable (self, “_on_damage_received”))
func _physics_process(delta: float) → void:
velocity.y += GRAVITY * delta
# Add the gravity.
if not is_on_floor():
velocity += get_gravity() * delta
if velocity.y > 0:
anim.play(“fall”)
match state:
MOVE:
move_state()
ATTACK:
attack_state()
ATTACK2:
attack2_state()
ATTACK3:
attack3_state()
BLOCK:
block_state()
SLIDE:
slide_state()
DAMAGE:
damage_state()
DEATH:
death_state()
if not is_on_floor():
velocity += get_gravity() * delta
func death_state ():
if health <= 0:
health = 0
velocity.x = 0
animPlayer.play(“Death”)
await animPlayer.animation_finished
queue_free()
get_tree().change_scene_to_file(“res://menu.tscn”)
move_and_slide()
player_pos = self.position
Signals.emit_signal("player_position_update", player_pos)
func move_state ():
var direction := Input.get_axis(“left”, “right”)
if direction:
velocity.x = direction * SPEED * run_speed
if velocity.y == 0:
if run_speed == 1:
anim.play(“Walk”)
else:
anim.play(“Run”)
else:
velocity.x = move_toward(velocity.x, 0, SPEED)
if velocity.y == 0:
animPlayer.play(“Idle”)
if direction == -1:
anim.flip_h = true
elif direction == 1:
anim.flip_h = false
if Input.is_action_pressed("run"):
run_speed = 2
else:
run_speed = 1
if Input.is_action_pressed("block"):
if velocity.x == 0:
state = BLOCK
else:
state = SLIDE
if Input.is_action_just_pressed("attack") and attack_cooldown == false:
state = ATTACK
func block_state ():
velocity.x = 0
animPlayer.play(“Block”)
if Input.is_action_pressed(“block”):
state = MOVE
func slide_state():
animPlayer.play(“Slide”)
await animPlayer.animation_finished
state = MOVE
func attack_state():
if Input.is_action_just_pressed(“attack”) and combo == true:
state = ATTACK2
velocity.x = 0
animPlayer.play(“Attack”)
await animPlayer.animation_finished
attack_freeze()
state = MOVE
func attack2_state():
if Input.is_action_just_pressed(“attack”) and combo == true:
state = ATTACK3
animPlayer.play(“Attack2”)
await animPlayer.animation_finished
state = MOVE
func attack3_state():
animPlayer.play(“Attack3”)
await animPlayer.animation_finished
state = MOVE
func combo1 ():
combo = true
await animPlayer.animation_finished
combo = false
func attack_freeze ():
attack_cooldown = true
await get_tree().create_timer(0.5).timeout
attack_cooldown = false
func damage_state ():
velocity.x = 0
anim.play(“Damage”)
await anim.animation_finished
state = MOVE
func _on_damage_received (enemy_damage):
health -= enemy_damage
if health <= 0:
health = 0
state = DEATH
else:
state = DAMAGE
print(health)
этот был код игрока – This was the player’s code
сейчас будет код врага --The enemy’s code is coming up now
extends CharacterBody2D
enum {
IDLE,
ATTACK,
CHASE
}
var state: int = 0:
set (value):
state = value
match state:
IDLE:
idle_state()
ATTACK:
attack_state()
@onready var animPlayer = $AnimationPlayer
@onready var sprite = $AnimatedSprite2D
var gravity = ProjectSettings.get_setting(“physics/2d/default_gravity”)
var player
var direction
var damage = 20
func _ready():
Signals.connect(“player_position_update”, Callable (self, “_on_player_position_update”))
func _physics_process(delta):
# Add the gravity.
if not is_on_floor():
velocity.y += gravity * delta
if state == CHASE:
chase_state()
move_and_slide()
func _on_player_position_update (player_pos):
player = player_pos
func _on_attack_range_body_entered(body):
state = ATTACK
func idle_state ():
animPlayer.play(“Idle”)
await get_tree().create_timer(1).timeout
$AttackDirection/AttackRange/CollisionShape2D2.disabled = false
state = CHASE
func attack_state ():
animPlayer.play(“Attack”)
await animPlayer.animation_finished
$AttackDirection/AttackRange/CollisionShape2D2.disabled = true
state = IDLE
func chase_state():
direction = (player.position - global_position).normalized()
if direction.x < 0:
sprite.flip_h = true
$AttackDirection.rotation_degrees = 180
else:
sprite.flip_h = false
$AttackDirection.rotation_degrees = 0
func _on_hit_box_area_entered(area):
Signals.emit_signal(“enemy_attack”, damage)
