这可能很容易解决,但是我对godot和gdscript还是很陌生,所以我不知道该怎么做,也找不到适用于我的2D平台开发人员的教程或任何东西。
我有一个带有CollisionShape2d的Sprite,当玩家进入其区域时会更改场景,我想使其与玩家的位置进行比较,如果在发生碰撞或更改时玩家的x坐标较高,则将其更改为上一个场景如果不是,则转到下一个场景,我使用一个简单的条件,if position.x > player.position.x:
但出现错误“在当前作用域中声明了标识符“玩家””,并且我不知道如何解决。我正在尝试对始终面对玩家的敌人做类似的事情,不用说我也遇到了同样的错误。
这是整个脚本:
extends Sprite
func _on_hitbox_area_entered(area: Area2D) -> void:
if area.is_in_group("shield"):
if position.x > player.position.x:
get_tree().change_scene("res://Levels/world_" + str(int(get_tree().current_scene.name) + 1) + ".tscn")
else:
get_tree().change_scene("res://Levels/world_" + str(int(get_tree().current_scene.name) - 1) + ".tscn")
也许还有另一种方法,但是当我寻找解决方案时,我发现无关的东西,而且我不知道该怎么办
解决方案是将播放器替换为区域,以使代码如下所示:
extends Sprite
func _on_hitbox_area_entered(area: Area2D) -> void:
if area.is_in_group("shield"):
if position.x > area.position.x:
get_tree().change_scene("res://Levels/world_" + str(int(get_tree().current_scene.name) + 1) + ".tscn")
else:
get_tree().change_scene("res://Levels/world_" + str(int(get_tree().current_scene.name) - 1) + ".tscn")
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句