Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Ошибка в Godot Engine 4.3

Корней Мудрый Ученик (95), на голосовании 2 недели назад
Помогите пожалуйста с проблемой:

У меня есть скрипт (код) скелета:
extends CharacterBody2D

enum {
IDLE,
ATTACK,
CHASE
}

var state: int = 0:
set(value):
state = value
match state:
IDLE:
idle_state()
ATTACK:
attack_state()



var chase = false
var speed = 100
@onready var animPlayer = $AnimationPlayer
@onready var sprite = $AnimatedSprite2D
var alive = true
var player
var direction
var damage = 5


func ready():
Signals.connect("player_position_update", Callable(self, "_on_player_position_update"))



func _physics_process(delta: float) -> void:

if not is_on_floor():
velocity += get_gravity() * delta

if state == CHASE:
chase_state()


func _on_player_position_update(player_pos):
player = player_pos



move_and_slide()



func _on_attack_range_body_entered(body: Node2D) -> void:
state = ATTACK



func idle_state():
animPlayer.play("idle")
await get_tree().create_timer(0.5).timeout
$AttackDerection/AttackRange/CollisionShape2D.disabled = false
state = CHASE


func attack_state():
animPlayer.play("attack")
await animPlayer.animation_finished
$AttackDerection/AttackRange/CollisionShape2D.disabled = true

state = IDLE


func chase_state():

direction = (player - self.position).normalized()

if direction.x < 0:
sprite.flip_h = true
$AttackDerection.rotation_degrees = 180
else:
sprite.flip_h = false
$AttackDerection.rotation_degrees = 0










func _on_hit_box_area_entered(area: Area2D) -> void:
Signals.emit_signal("enemy_attack", damage)
В методе chase_state я задаю направление скелету в зависимости от переменной direction (это координаты игрока - координаты скелета), проблема в том что при запуске игры мне выдаётся ошибка - Invalid operands 'Nil' and 'Vector2' in operator '-'. У меня есть подозрение что проблема в direction, но я не знаю как это исправить и в direction проблема или нет
Голосование за лучший ответ
Похожие вопросы