import pyglet
window=pyglet.window.Window(800,600)
back=pyglet.resource.image('zc.png')
class BlueSoldier():
def __init__(self,x,y):
self.x=x
self.y=y
self.animation1=pyglet.resource.animation('walk.gif')
self.animation2=pyglet.resource.animation('attack.gif')
self.sprite=pyglet.sprite.Sprite(self.animation1,self.x,self.y) #默认精灵图
def display(self):
self.sprite.draw()
def attack(self):
self.sprite=pyglet.sprite.Sprite(self.animation2,self.sprite.x,self.y) #相遇后的精灵图
self.sprite.draw()
class RedSoldier():
def __init__(self,x,y):
self.x=x
self.y=y
self.animation1=pyglet.resource.animation('walk.gif')
self.animation2=pyglet.resource.animation('attack.gif')
self.sprite=pyglet.sprite.Sprite(self.animation1,self.x,self.y)
def display(self):
self.sprite.draw()
def attack(self):
self.sprite=pyglet.sprite.Sprite(self.animation2,self.sprite.x,self.y)
self.sprite.draw()
def update(dd):
pass
pyglet.clock.schedule_interval(update,1/60)
blue=BlueSoldier(200,200)
red=RedSoldier(600,200)
@window.event
def on_draw():
back.blit(0,0)
if blue.sprite.x!=red.sprite.x-32: #判断当2个对象不相遇时分别移动
blue.sprite.x +=1
red.sprite.x -=1
blue.display()
red.display()
else: #判断当2个对象相遇后调用攻击的精灵图并显示
blue.attack()
red.attack()
if __name__ == '__main__':
pyglet.app.run()
我运行下给你看看
好的,感谢你,测试过好像是2个精灵相遇碰撞事件触发时候给2个sprite精灵重新传gif图片,如果在on_draw()里面传的话,就会出现这种情况,如果在on_draw外面就不会出现这种不会动的情况,但是问题是2个精灵碰撞事件触发时候的sprite.x坐标传不到函数外
是不是有其他的可以在on_draw()函数外能检测到2个精灵碰撞相遇事件的方法
建议完成后给出结果 谢谢
尚未解决,是否是pyglet用的人太少了