我试图让以下工作正常进行 - 这是一个通过变换按 W 移动并移动到鼠标光标的播放器。我无法得到的是与板条箱的碰撞。
我制作了area2d,并附加了一个玩家sprite2d和一个带有recatangle的colisionshape2d 当我穿过板条箱时它什么也没做
任何人都可以帮忙吗我已经尝试了到目前为止的所有方法//
extends Area2D
# Called when the node enters the scene tree for the first time.
func _ready():
pass # Replace with function body.
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta):
pass
func _on_area_entered(area):
if area.name == "Player":
print("PLAYER ENTERED THE CRATE");
您是否手动编辑变换位置?如果您手动更新 Sprite2D 的位置,则它不会进行碰撞检查。您只需将位置设置为您想要的任何位置即可。
您可以利用Area2D的area_entered信号来执行手动检查,看看您的运动是否会导致交叉点,然后如果会的话撤消该运动,但这不是我建议的。
我不知道你的具体用例,但如果我处于你的情况,我会想用CharacterBody2D节点替换播放器。您可以将精灵和碰撞器添加到此节点,并且可以使用CharacterBody 的move_and_slide 函数来移动角色,而无需自己编辑变换。对于大多数用例来说,这是 Godot 中玩家控制的 2D 对象的预期解决方案。
希望这有帮助!