簡體   English   中英

如何讓敵人跟隨pygame中的玩家?

[英]How to make an enemy follow a player in pygame?

我正在制作一個自上而下的射手,並希望我的僵屍跟隨我的角色,我的程序使用一個主循環。 我的角色的位置是x和y,他由箭頭鍵控制。 我有一個僵屍,當時拍攝的時候,它會在屏幕的左邊緣隨機產生。 如何讓僵屍跟隨我產生的位置?

這是僵屍功能:

def makezombie():
    global zom
    zom = Rect (0,randint(0, height-40), 49, 38)
    return zom

我設置zombie = makezombie()

在我的主循環中,我有以下內容:

for shot in shots:
    if zombie.collidepoint(shot[X],shot[Y]):
        zombie=makezombie()
        points+=1000
        impact.play()
        blood.play()

我不確定我是否完全理解這個問題,但基本上你可以做的是采用球員(x,y)坐標和僵屍(x,y)坐標。 假設(xp,yp)是玩家坐標而且(xz,yz)是僵屍,你可以使用以下算法來找到從僵屍到玩家的方向:

import math
(dx, dy) = ((xp - xz)/math.sqrt((xp - xz) ** 2 + (yp - yz) ** 2), 
            (yp - yz)/math.sqrt((xp - xz) ** 2 + (yp - yz) ** 2))

然后在主循環中,你想通過執行newCoord =(xp + dx * spped,yp + dy * speed)更新僵屍x和y位置坐標,其中速度是你希望僵屍每個循環移動的一些像素數。 然后在這個新位置重繪僵屍。

希望有所幫助! 如果沒有,請澄清問題。

如果您了解矢量數學(即: euclid ),則可以使用向量減法。

zombie_speed = 50 # pixels / an update
player = Vector2(player.rect.x, player.rect.y)
zombie = Vector2(zombie.rect.x, zombie.rect.y)
movement = player - zombie
movement.normalize()
movement *= zombie_speed

然后將運動的x,y值添加到zombie的Rect()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM