对于 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_distance
是C和D之间的距离
归一化向量的计算是错误的。normalized
是向量从B到C的倒数长度:
normalized = 1 / sqrt(player_to_col_vector[0] ** 2 + player_to_col_vector[1] ** 2)
下面lenBC
是B和C之间的距离。dirBC
是一个单位向量(这意味着它的长度是 1)并且是从B到C的方向:
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)
是从C到D的向量。
dx, dy = (dirBC[0] * acceptable_distance, dirBC[1] * acceptable_distance)
向量b,等于点D,是向量v和向量a的总和:
bx, by = (col_distance[0] + dx, col_distance[1] + dy)
从点的向量B
来D
是的总和w
和a
:
BDx, BDy = (player_to_col_vector[0] + dx, player_to_col_vector[1] + dy)
已删除,因为标签“pygame”已被删除。
添加回答
举报
0/150
提交
取消