0

我正在尝试传送我的播放器节点(kinematicbody2d),当它从 Finish 节点的一侧击中我的完成节点(area2d)时
我正在使用 godot 3

我尝试
了什么:使用 get_node("player").set_pos 和 get_node("player").location 更改位置

代码:

extends Area2D

func _on_Finish12_body_entered(body):
        if body.get_name() == "player":
                print("%s touched the finish on level %s" % [body.get_name(), get_tree().get_current_scene().get_name()])
                get_node("player").position = Vector2(1504, 1896)
                pass

所以我需要的是:
游戏被传送到 1504、1896

4

2 回答 2

0

这适用于 Area 和 KinematicBody(即 3D):

extends Area
func _on_Area_body_entered(body):
    body.look_at_from_position(spawn, Vector3(0,0,0),  Vector3(0,0,0))

spawn 是一个空空间,用于定义空间中要传送到的点。

于 2019-04-16T13:03:39.933 回答
0

这里有很多未知数可能是问题所在

  • 玩家的位置是否在代码的其他部分更新?如果是这样,您是否有可能确实移至 1504、1896,但随后立即被所述代码破坏?
  • 申请新职位时的当前行为是什么?你的播放器会移动吗?它会去某个意想不到的地方吗?
  • 您的打印语句是否执行?
  • 您是否尝试过对 kinematicBody 使用 move_and_slide/move_and_collide 来检查碰撞?

只是关于如何解决它的一些想法。

于 2019-01-14T18:23:17.713 回答