我对Godot和GDScript比较陌生,但学习速度很快,所以我开始尝试制作一个2D平台,在那里你可以四处移动,可以在墙上爬升和滑动,可以从墙上跳下来,也可以呆在墙上。我使用x轴上播放器的raycast2D来检测播放器何时触摸area2D (在本例中是一个也是staticbody2D的磁贴)。为了测试这一点,我写道:
onready var raycast = get_node("RayCast2D")
func _physics_process(delta):
if raycast.collide_with_areas == true:
print("area")
我遇到的问题是控制台总是打印区域,这意味着我所有的磁贴都是area2Ds的(其中一些只是staticbody2D)。为什么我所有的瓷砖都是area2Ds的?
发布于 2021-01-28 06:44:29
从RayCast2D class documentation
bool collide_with_areas [default: false]
set_collide_with_areas(value) setter
is_collide_with_areas_enabled() getter
If true, collision with Area2Ds will be reported.
您正在使用collide_with_areas
,就好像它指示光线投射当前是否与区域发生碰撞一样,而实际上它是一个类属性,指示光线投射是否应该报告与区域的碰撞。
相反,您应该设置collide_with_areas
(和enabled
!)设置为true (通过检查器或代码),然后调用raycast.get_collider()
。
https://stackoverflow.com/questions/65854268
复制相似问题