戈多 - 敌人与墙壁碰撞后的flip_h问题(2D)



我正在使用Godot 3.2进行2D项目,并为敌人运行脚本以在与墙壁碰撞时改变方向(flip_h(,但是,当敌人与墙壁或其他敌人碰撞时,敌人也会改变方向。

我使用的代码仅在第一次(一次(碰撞时才有效,之后不再颠倒方向,有什么想法吗?

谢谢

extends "res://Actors/Actors.gd"
func _ready() -> void:
set_physics_process(false)
_velocity.x = -speed.x
$enemy1.flip_h = true
func _physics_process(delta) -> void:
_velocity.y += gravity * delta
$enemy1.play("walk")
if is_on_wall():
_velocity.x *= -1.0
$enemy1.flip_h = false
_velocity.y = move_and_slide(_velocity, FLOOR_NORMAL).y

有人指出我的答案使用:

$enemy1.flip_h = !$enemy1.flip_h

因为我一直在称呼"假"。

但是,他给了我另一个解决方案:

is_on_wall()

并建议:

if _velocity.x > 0:
$enemy1.flip_h = false
elif _velocity.x < 0:
$enemy1.flip_h = true

最新更新