我正在使用python在pygame模块中创建一个战斗/战斗系统。基本上,我有一个rat,由ratX和ratY控制,还有一个播放器,由VARX和y控制。rat将简单地跟随播放器,代码如下:
if movement == True:
if x > 0:
if ratX != x:
if ratX > x:
ratX -= 1
ratFacing = 1
else:
ratX += 1
ratFacing = -1
if y > 0:
if ratY != y+30:
if ratY > y+30:
ratY -= 1
else:
ratY += 1
之后,一旦老鼠靠近玩家(至少40像素),那么这个代码将使用距离公式检测到这一点,并减去玩家的健康值:
if (math.sqrt( ( (ratX - x) **2) + ( (ratY - y)**2) ) < 40):
x -= 10*ratFacing
if plyrHealth > 1:
plyrHealth -= 1
ratX += 40*ratFacing
else:
run = False
现在,我添加了一个战斗系统,玩家将挥舞一把剑,物品将根据变量ra
旋转。如果var等于-55,这意味着玩家达到了剑可以造成伤害的程度。如果玩家在范围内(至少100像素),这意味着玩家可以攻击老鼠并对其造成伤害:
if ra == -55 and (math.sqrt( ( (ratX - x) **2) + ( (ratY - y)**2) ) < 100): #Line that checks if sword has swung and the plyr is in range
dam = itemInHand[11] #This is the amount of damage that the specific sword in hand does
if isJump:
dam *= 3
if ratHealth - dam <= 0:
ratHealth = 0
else:
ratHealth -= dam
主要的问题是,从那时起,我使用的是距离公式,我只是检查玩家是否在老鼠的射程内,他们可以攻击敌人,即使他们没有面对它。有没有一种方法可以创建一个线跟踪,例如,它将返回一个它与之碰撞的任何对象的列表?这样一来,它检测碰撞的唯一方法就是如果有一条不可见的线,如果它与一条不可见的线发生碰撞,它就会返回true。在python中是否有一种内置的方法来实现这一点,或者我可以自己创建它?任何帮助都将不胜感激。你知道吗
现在,我在pygame中没有过期,但我认为,您要求的是只过滤那些近战范围内的对象(敌人、老鼠、可能是灌木丛等)。你知道吗
所以,我们需要一个元组数组(x,y),这个元组由近战范围组成。拔出剑的玩家总是有一把。有很多方法可以确定它,所以我将坚持使用常量数组。你知道吗
现在我们过滤范围内的对象。你知道吗
相关问题 更多 >
编程相关推荐