最近在尝试做游戏的模组开发,在进行距离判断的时候遇到了一些问题
当我获得到一堆生物的ID的时候,通过ID获取到他们每个生物的坐标计算出其与玩家的距离后
我想计算出距离最近的生物,返回他们的ID
但是怎么获取到对应值出现了一点问题
这个是我目前的解决方案,但是感觉有点蠢,而且当多个生物距离相同的时候会出现bug
复制代码我尝试过另一种方案是
复制代码当我获取到这个tempList的时候[["生物ID1""距离1"],["生物ID2""距离2"]]
我就不知道该怎么处理这个temp,让我计算出最先的距离,然后返回对应的生物ID
当我获得到一堆生物的ID的时候,通过ID获取到他们每个生物的坐标计算出其与玩家的距离后
我想计算出距离最近的生物,返回他们的ID
但是怎么获取到对应值出现了一点问题
这个是我目前的解决方案,但是感觉有点蠢,而且当多个生物距离相同的时候会出现bug
- def GetNearlyEntity(self, entity_list, player):
- player_pos = GetPos(player) # 获取玩家坐标
- dist_dict = {}
- for entityId in entity_list:
- entity_pos = GetPos(entityId) # 获取生物坐标
- dist = Cala_3D_Dist(entity_pos, player_pos) # 获取距离
- dist_dict[dist] = entityId
- return dist_dict[min(dist_dict.keys())] # 返回ID
- def GetNearlyEntity(self, entity_list, player):
- player_pos = GetPos(player) # 获取玩家坐标
- dist_list = []
- for entityId in entity_list:
- entity_pos = GetPos(entityId) # 获取生物坐标
- dist = Cala_3D_Dist(entity_pos, player_pos)
- dist_list.append(dist)
- temp = map(lambda x,y:[x, y],entity_list, dist_list)
我就不知道该怎么处理这个temp,让我计算出最先的距离,然后返回对应的生物ID
不能这样写吗
复制代码
- def GetNearlyEntity(self, entity_list, player):
- player_pos = GetPos(player) # 获取玩家坐标
- dist_min = 0
- nearly_entity = None
- for entityId in entity_list:
- entity_pos = GetPos(entityId) # 获取生物坐标
- dist = Cala_3D_Dist(entity_pos, player_pos) # 获取距离
- if dist < dist_min or dist_min == 0:
- dist_min = dist
- nearly_entity = entityId
- return nearly_entity