YCM7800 2024-09-11 20:33 采纳率: 50%
浏览 18
已结题

使用godot4.3在随机地图上实现寻路:却被提示无法获取路径

目标:在一个随机生成的无边界六边形地图中通过鼠标点击控制人物的移动。

现象:在get_id_path时程序报错:



Player_setting.gd:14 @ _process(): Can't get id path. Point (-1, -1) out of bounds [P: (0, 0), S: (0, 0)].



这是出问题的源代码:

extends CharacterBody2D
@export var map:TileMapLayer

func _process(delta: float) -> void:
    if Input.is_action_just_pressed("click"):
        var mouse_position = get_global_mouse_position()
        //获取起始位置和终点位置
        var start_coord = map.local_to_map(global_position)
        var target_coord = map.local_to_map(mouse_position)
                // 出问题的代码
                var calculate_path = map.astar.get_id_path(start_coord,target_coord)
        // 用于检测是否成功获取path
        if target_path:
            print("we finish!")
    

其中,被引用的map来自于随机地图生成节点,主要代码如下:

var astar := AStarGrid2D.new()
func _ready():
    
    astar.region = get_used_rect()
    astar.cell_size = tile_set.tile_size
    
    astar.update()

结语:英语渣,看不懂报错,翻译照样看不懂,参照别人4.2的代码做的,因为版本改动前面也有做优化,但这里报错属实想不明白。求指点。

  • 写回答

1条回答 默认 最新

  • 一轮明月照丘壑 2024-09-11 20:41
    关注

    以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

    根据您提供的信息和代码,我看到你在使用 Godot 的 AStarGrid2D 来进行路径寻找,并在尝试获取路径时遇到了问题。从错误信息来看,“Can't get id path. Point (-1, -1) out of bounds”,这表示在尝试获取路径时使用的点(-1, -1)超出了地图的范围。这个问题可能是由于以下原因导致的:

    1. 坐标转换问题:你在将鼠标点击位置转换为地图上的坐标时可能出现了问题。map.local_to_map(mouse_position)可能无法正确地将鼠标位置转换为地图上的坐标。由于鼠标位置是在整个屏幕上的,而地图只是其中的一部分,因此你需要确保转换后的坐标在地图的范围内。
    2. AStarGrid2D 的配置问题:你在初始化 AStarGrid2D 时设置了区域(region)和单元格大小(cell_size),但似乎没有确保这些设置与你的地图完全匹配。如果 AStarGrid2D 的区域设置不正确,或者在更新 AStarGrid2D 时地图发生了变化,那么可能会导致路径寻找失败。

    为了解决这个问题,你可以尝试以下几个步骤:

    1. 检查坐标转换:确保你的map.local_to_map()函数能够正确地将鼠标位置转换为地图上的坐标。你可能需要调整转换逻辑以确保坐标在地图范围内。
    2. 验证 AStarGrid2D 的配置:检查你的 AStarGrid2D 配置是否与你的地图完全匹配。确保区域(region)和单元格大小(cell_size)的设置与你的地图一致。
    3. 调试路径寻找过程:在尝试获取路径之前,你可以打印起始和终点坐标,以确认它们是否在地图范围内。这样可以帮助你判断问题是否出在坐标转换上。
    4. 检查地图生成逻辑:确保你的随机地图生成逻辑正确,并且地图的数据与 AStarGrid2D 的配置保持一致。

    如果你仍然遇到问题,建议提供更多的代码和上下文信息,以便更准确地诊断问题所在。此外,也可以考虑查看 Godot 的官方文档和相关社区论坛,以获取更多关于路径寻找和地图生成方面的帮助。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 10月4日
  • 已采纳回答 9月26日
  • 创建了问题 9月11日