Queue_free() 在启动时立即运行,而不是在触发时运行
Queue_free() runs immediately on start instead of on trigger
在我的游戏中,我有一个玩家精灵,它有一个碰撞区域。
我游戏中的草也有碰撞形状。
草本应在与玩家精灵碰撞时产生效果,但是,当我 运行 游戏时,草立即 运行 产生效果并消失了。
当我注释掉 queue_free() 时,草会产生应有的效果(碰撞时)
extends Node2D
func create_grass_effect():
var GrassEffect = load("res://Effects/GrassEffect.tscn")
var grassEffect = GrassEffect.instance()
var world = get_tree().current_scene
world.add_child(grassEffect)
grassEffect.global_position = global_position
func _on_Hurtbox_area_entered(area):
create_grass_effect()
queue_free()
print('test')
控制台输出:
测试
测试
测试
测试
(每个草节点的每个测试)
如果需要,我可以提供更多游戏代码。
请记住,我是一名新游戏开发者,这是来自教程。
来自 Heartbeast 的艺术作品 https://www.youtube.com/c/uheartbeast
编辑:
我安慰变量区,结果是这样的:
[Area2D:1364]
[Area2D:1344]
[Area2D:1372]
[Area2D:1368]
[Area2D:1339]
[Area2D:1339]
[Area2D:1339]
[Area2D:1339]
[Area2D:1339]
[Area2D:1339]
[Area2D:1339]
[Area2D:1339]
[Area2D:1339]
[Area2D:1339]
1339 是在游戏中触及草地时,开始时的数字自动为 运行 当游戏为 运行
另一个编辑:
当在播放器中禁用碰撞时,草仍然有效并且可以自由排队
编辑 3:
禁用草丛中的碰撞会导致草丛正常运行,除非您无法与之碰撞
我不确定为什么,但将信号从 area_entered
更改为 body_shape_entered
似乎有效。
在我的游戏中,我有一个玩家精灵,它有一个碰撞区域。
我游戏中的草也有碰撞形状。
草本应在与玩家精灵碰撞时产生效果,但是,当我 运行 游戏时,草立即 运行 产生效果并消失了。 当我注释掉 queue_free() 时,草会产生应有的效果(碰撞时)
extends Node2D
func create_grass_effect():
var GrassEffect = load("res://Effects/GrassEffect.tscn")
var grassEffect = GrassEffect.instance()
var world = get_tree().current_scene
world.add_child(grassEffect)
grassEffect.global_position = global_position
func _on_Hurtbox_area_entered(area):
create_grass_effect()
queue_free()
print('test')
控制台输出:
测试
测试
测试
测试
(每个草节点的每个测试)
如果需要,我可以提供更多游戏代码。
请记住,我是一名新游戏开发者,这是来自教程。
来自 Heartbeast 的艺术作品 https://www.youtube.com/c/uheartbeast
编辑:
我安慰变量区,结果是这样的:
[Area2D:1364]
[Area2D:1344]
[Area2D:1372]
[Area2D:1368]
[Area2D:1339]
[Area2D:1339]
[Area2D:1339]
[Area2D:1339]
[Area2D:1339]
[Area2D:1339]
[Area2D:1339]
[Area2D:1339]
[Area2D:1339]
[Area2D:1339]
1339 是在游戏中触及草地时,开始时的数字自动为 运行 当游戏为 运行
另一个编辑:
当在播放器中禁用碰撞时,草仍然有效并且可以自由排队
编辑 3:
禁用草丛中的碰撞会导致草丛正常运行,除非您无法与之碰撞
我不确定为什么,但将信号从 area_entered
更改为 body_shape_entered
似乎有效。