Godot 碰撞检测

问题描述 投票:0回答:1

area2D 和具有碰撞形状2D 的精灵

我试图让以下工作正常进行 - 这是一个通过变换按 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");

游戏2D视图请点击这里

godot
1个回答
0
投票

您是否手动编辑变换位置?如果您手动更新 Sprite2D 的位置,则它不会进行碰撞检查。您只需将位置设置为您想要的任何位置即可。

您可以利用Area2D的area_entered信号来执行手动检查,看看您的运动是否会导致交叉点,然后如果会的话撤消该运动,但这不是我建议的。

我不知道你的具体用例,但如果我处于你的情况,我会想用CharacterBody2D节点替换播放器。您可以将精灵和碰撞器添加到此节点,并且可以使用CharacterBody 的move_and_slide 函数来移动角色,而无需自己编辑变换。对于大多数用例来说,这是 Godot 中玩家控制的 2D 对象的预期解决方案。

希望这有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.