为了账号安全,请及时绑定邮箱和手机立即绑定

仅使用朝向敌人和藏身点的向量来隐藏搜索行为

仅使用朝向敌人和藏身点的向量来隐藏搜索行为

翻过高山走不出你 2021-11-30 18:32:21
对于 pygame 类,我被要求使用有关游戏世界的有限信息来实现各种搜索行为。大多数行为都很容易做到,但我在尝试使用我有权访问的信息实现隐藏行为时受阻。我得到了两个向量和一个代理在世界上的位置。第一个向量是代理和它必须躲避的敌人之间的距离。第二个向量是与代理的距离以及它可以隐藏在后面的最近列。鉴于此,我想将代理移向列并确保它对敌人保持隐藏。在图形术语中,我试图b在此图像中找到向量,我可以访问该向量u,v并且我正在尝试计算该向量w加上一个标量a,以获得与该列的预期距离 + 其半径。我目前正在运行这段代码,但它显然是错误的,因为我计算的向量超出了游戏世界的范围。player_to_col_vector = (    col_distance[0] - enemy_distance[0],    col_distance[1] - enemy_distance[1],)normalized = 1 / sqrt(player_to_col_vector[0] ** 2 + player_to_col_vector[1] ** 2)dx = normalized * acceptable_distancedy = normalized * acceptable_distance我认为我的问题是我现在有 vector wa,但我不知道如何b从我拥有的信息中找到vector 。
查看完整描述

1 回答

?
森林海

TA贡献2011条经验 获得超2个赞

我假设这acceptable_distance对应于图像中向量a的大小。所以acceptable_distanceCD之间的距离

归一化向量的计算是错误的。normalized是向量从BC的倒数长度:

normalized = 1 / sqrt(player_to_col_vector[0] ** 2 + player_to_col_vector[1] ** 2)

下面lenBCBC之间的距离。dirBC是一个单位向量(这意味着它的长度是 1)并且是从BC的方向:

lenBC = sqrt(player_to_col_vector[0] ** 2 + player_to_col_vector[1] ** 2)
dirBC = (player_to_col_vector[0] / lenBC, player_to_col_vector[1] / lenBC)

(dx, dy)是从CD的向量。

dx, dy = (dirBC[0] * acceptable_distance, dirBC[1] * acceptable_distance)

向量b,等于点D,是向量v和向量a的总和:

bx, by = (col_distance[0] + dx, col_distance[1] + dy)

从点的向量BD是的总和wa

BDx, BDy = (player_to_col_vector[0] + dx, player_to_col_vector[1] + dy)

已删除,因为标签“pygame”已被删除。


查看完整回答
反对 回复 2021-11-30
  • 1 回答
  • 0 关注
  • 181 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信