對于 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
提交
取消
