同样,这个问题是关于PyParticles4的。
Link to last question for reference
如果不清楚请评论。。。在
我正在做一个射击游戏,很像this,但是在一个平地上,墙的高度在每一个转弯处都会变化(这是游戏中的乐趣),有两个玩家,每个人都有一个可以移动一定距离的大炮(有限制,而且他们不能移动超过一定数量从他们的开始位置)在每个回合(球员决定他是否想移动)。在
我的代码到目前为止(子弹和射手)
class Bullet(PyParticles.Particle):
def hit(self,shooterlist):
for shoot in shooterlist:
#confusion
dist = math.hypot(dx,dy)
# other funcs to added
class Shooter:
def __init__(self,pos,size):
self.rect = pygame.Rect(pos,size)
# other funcs to added
子弹与枪手相撞。有什么办法知道子弹什么时候和矩形物体相撞吗?
有人建议我观察矩形边缘上的所有点,看看它是否在圆内,但它似乎很慢。
我觉得更快的东西会更好。
…
…
更新:
圆周围可以有一个矩形,如果与矩形相撞,我现在知道矩形何时接近圆,甚至可能会碰到它。。我该如何前进??(Thx对PygameNerd)
你可以用直线碰撞点用矩形的中心做更大的圆
每次} 检查圆周长上的点,看其中一个是否与墙相撞。在pygame中,您可以通过从圆曲面创建一个^{} 并运行^{} 来获得周长点的列表。你可能不需要每一分,所以你可以得到每一分。实际上,您可能只需要圆矩形边的中点,这可以从
colliderect
返回true时,都可以运行另一个测试。对于这个测试有几个选项。一个是类似于你已经收到的建议,但与墙和圈切换。用^{Rect
对象本身获得。在你要求精确的碰撞,这将给你一个圆和一个矩形之间完美的像素碰撞检测。不过,在游戏中可能不需要它,所以我建议您先尝试一下
colliderect
。如果您对pygame中的冲突检测感兴趣,有很多选项直接在Mask
和Sprite
文档中描述的函数中实现或基于这些函数实现。在我不知道你的问题是什么意思,但我认为你需要
colliderect
函数。在把它放在代码中的某个地方,如果它返回true,就让球爆炸。在
相关问题 更多 >
编程相关推荐