[英]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.