传送节点

时间:2019-01-12 16:31:38

标签: godot gdscript

我正在尝试从播放器节点(kinematicbody2d)从完成节点侧面击中完成节点(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

所以我需要什么:
这场比赛被传送到1896年的1504年

2 个答案:

答案 0 :(得分:0)

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

  • 代码的其他部分是否更新了玩家的位置?如果是这样,您是否有可能搬到了1896年的1504年,但立即被上述代码所破坏?
  • 应用新职位时的当前行为是什么?您的播放器会移动吗?它会到意想不到的地方吗?
  • 您的打印语句是否执行?
  • 您是否尝试过将move_and_slide / move_and_collide用于kinematicBody来检查碰撞?

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

答案 1 :(得分: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是一个空的空间,用于定义要传送到的空间中的点。