You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在屏幕坐标系中定位Node2D?(考虑相机移动)

解决Node2D定位到屏幕指定位置(考虑相机移动)的方法

核心思路是将屏幕坐标转换为世界坐标,再设置Node2D的全局位置——因为Node2D的global_position属于世界空间,相机的移动会改变屏幕与世界的映射关系,直接设置屏幕坐标无效。

具体操作步骤:

  1. 获取当前视口的主相机

    var main_camera = get_viewport().get_camera_2d()
    
  2. 将目标屏幕坐标转换为世界坐标
    相机的unproject_position方法会自动处理相机的位置、缩放、旋转等参数,逆向计算出屏幕坐标对应的世界坐标:

    # 目标屏幕位置(示例:x=100, y=200)
    var target_screen_pos = Vector2(100, 200)
    # 转换为世界空间坐标
    var target_world_pos = main_camera.unproject_position(target_screen_pos)
    
  3. 设置Node2D的全局位置

    my_node_2d.global_position = target_world_pos
    

完成上述设置后,不管相机如何移动、缩放,你的玩家角色(Node2D)都会准确出现在屏幕的(100,200)位置,同时保持在世界场景中,随相机滚动正常移动。

内容的提问来源于stack exchange,提问作者fguillen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 19:22:05