区域相遇
本课属于 Coddy Godot 学习旅程的“信号与碰撞”单元。第 6 课,共 27 课。
Godot 的节点内置了信号。你会经常用到 Area2D 的 4 个信号:
body_entered和body_exited:一个物理体进入或离开了。物理体是实心的物体,例如CharacterBody2D和StaticBody2D。area_entered和area_exited:另一个区域进入或离开了。
一个区域不会为另一个区域发送 body_entered 信号。下落的星星是区域,所以篮子需要使用 area_entered:
func _ready():
area_entered.connect(_on_star_caught)这个函数会接收进入的区域,所以需要一个值作为参数,例如 _on_body_entered(body)。你可以随意命名这个参数。
挑战
简单让篮子检测到落下的星星。
- 星星是区域,不是物体。在
_ready()中,连接area_entered,而不是body_entered。 - 保留
_on_star_caught作为函数。
按“开始”:控制台会显示两次 Caught a star!,每颗星星显示一次。然后按“检查”。
亲手试试
extends Area2D
func _ready():
body_entered.connect(_on_star_caught)
func _on_star_caught(star):
print("Caught a star!")
信号与碰撞中的所有课
自己练习: Godot 在线编辑器