【问题标题】:Godot raycast2D area detection not workingGodot raycast2D区域检测不起作用
【发布时间】:2021-04-27 10:59:35
【问题描述】:

我对 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")

我遇到的问题是控制台一直在打印区域,这意味着我所有的图块都是 area2D(其中一些只是 staticbody2D)。为什么我的所有图块都是 area2D?

【问题讨论】:

    标签: 2d godot


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-11
      • 2020-10-07
      • 2021-05-05
      • 1970-01-01
      • 2014-08-02
      • 2017-06-05
      • 1970-01-01
      • 2023-03-26
      相关资源
      最近更新 更多