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

对于 pygame 类,我被要求使用有关游戏世界的有限信息来实现各种搜索行为。大多数行为都很容易做到,但我在尝试使用我有权访问的信息实现隐藏行为时受阻。

我得到了两个向量和一个代理在世界上的位置。第一个向量是代理和它必须躲避的敌人之间的距离。第二个向量是与代理的距离以及它可以隐藏在后面的最近列。鉴于此,我想将代理移向列并确保它对敌人保持隐藏。

在图形术语中,我试图b在此图像中找到向量,我可以访问该向量uv并且我正在尝试计算该向量w加上一个标量a,以获得与该列的预期距离 + 其半径。

http://img1.mukewang.com/61a5fdc900012e5409290555.jpg

我目前正在运行这段代码,但它显然是错误的,因为我计算的向量超出了游戏世界的范围。


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_distance

dy = normalized * acceptable_distance

我认为我的问题是我现在有 vector wa,但我不知道如何b从我拥有的信息中找到vector 。


翻过高山走不出你
浏览 227回答 1
1回答

森林海

我假设这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”已被删除。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python