微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Godot raycast2D 区域检测不起作用

如何解决Godot raycast2D 区域检测不起作用

我对 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 ?

解决方法

来自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()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。