使用区域 2D 的 Godot body_exit函数

Godot body_exit function using area 2D

提问人:Wave Computer 提问时间:11/13/2023 更新时间:11/13/2023 访问量:28

问:

我正在尝试创建一个代码,让我的暴徒能够在玩家处于设置的区域时追逐玩家。我的代码在玩家进入该区域时有效,但当玩家退出区域时不起作用。我认为问题出在body_exit信号上,但是当我检查它时,它似乎没有任何问题。这段代码来自一个 tutoiral 形式 freecodecamp godot 教程 2D 平台游戏。非常感谢您的帮助。

extends CharacterBody2D

var SPEED = 50
var gravity = ProjectSettings.get_setting("physics/2d/default_gravity")
var player
var chase = false

func _physics_process(delta):
    #Gravity for Frog
    velocity.y += gravity * delta
    if chase == true:
        if get_node("AnimatedSprite2D").animation != "Death":
            get_node("AnimatedSprite2D").play("Jump")
        player = get_node("../../Player/Player")
        var direction = (player.position - self.position).normalized()
        if direction.x > 0:
            get_node("AnimatedSprite2D").flip_h = true
        else:
            get_node("AnimatedSprite2D").flip_h = false
        velocity.x = direction.x * SPEED
    else:
        velocity.x = 0
    move_and_slide()
    
func _on_player_detection_body_entered(body):

    if body.name == "Player":
        chase = true
        
func _on_player_detection_body_exited(body):
    if body.name == "Player":
        chase = false


因此,当玩家不在该区域时,我尝试通过在函数中打印语句来进行调试。但是,问题是没有找到打印语句。所以我似乎无法说出问题出在哪里

戈多

评论

0赞 SilicDev 11/13/2023
Area2D 的body_exited信号是否连接到您的脚本?
0赞 Wave Computer 11/13/2023
是的,它是。然而,代码不起作用
0赞 M. R. M. 11/14/2023
尝试在脚本本身中连接信号,看看它是否有效(如果你使用的是 Godot 3.5 版,你可能需要这个

答: 暂无答案