沿特定方向移动精灵 cocos2d
Move a sprite along a particular direction cocos2d
我想沿着特定方向移动精灵,直到 cocos2d 中的下一次按键。
处理按键的代码如下,
def on_key_press(self, symbol, modifiers):
if symbol == key.LEFT:
DIRECTION="left"
before=self.player.position
height=self.player.position[1]
width=self.player.position[0]-1
self.player.position=width,height
self.player.rotation=-90
if(height>=600 or height<=0):
print ("you lose)
if(width>=800 or width<=0):
print ("you lose)
elif symbol == key.RIGHT:
DIRECTION="right"
before=self.player.position
height=self.player.position[1]
width=self.player.position[0]+1
self.player.position=width,height
self.player.rotation=90
if(height>=600 or height<=0):
print ("you lose)
if(width>=800 or width<=0):
print ("you lose")
...
我试过这个函数,它调用上面的函数来保持精灵沿着一个方向移动,
def keep_going(self,DIRECTION):
if(DIRECTION=="left"):
self.on_key_press(key.LEFT,512)
...
但是sprite很容易超出屏幕边界,有没有办法让sprite沿着这个方向有控制的移动?
如何调用函数keep_going
?如果它在一个简单的循环中,那么它被调用得太频繁并且精灵可能移动得太快以至于它立即消失。
我假设您的代码中的 self
是某个层。您可以将函数的签名更改为 def keep_going(self, dt, DIRECTION)
,然后,例如在层的构造函数中,调用 self.schedule_interval(self.keep_going, 0.1, 'left')
以每秒更新精灵的位置 10 次。
另一种可能性是使用 schedule 函数,该函数将函数安排为 运行 不断,而不是固定间隔。在那种情况下,您必须更多地修改您的功能。我建议根据输入为精灵设置速度,然后以像素为单位计算新位置。 samples/balldrive_toy_game/balldrive_toy_game.py
中的 cocos 包中有一个很好的例子
如果你想使用动作,Move动作很适合。
我想沿着特定方向移动精灵,直到 cocos2d 中的下一次按键。
处理按键的代码如下,
def on_key_press(self, symbol, modifiers):
if symbol == key.LEFT:
DIRECTION="left"
before=self.player.position
height=self.player.position[1]
width=self.player.position[0]-1
self.player.position=width,height
self.player.rotation=-90
if(height>=600 or height<=0):
print ("you lose)
if(width>=800 or width<=0):
print ("you lose)
elif symbol == key.RIGHT:
DIRECTION="right"
before=self.player.position
height=self.player.position[1]
width=self.player.position[0]+1
self.player.position=width,height
self.player.rotation=90
if(height>=600 or height<=0):
print ("you lose)
if(width>=800 or width<=0):
print ("you lose")
...
我试过这个函数,它调用上面的函数来保持精灵沿着一个方向移动,
def keep_going(self,DIRECTION):
if(DIRECTION=="left"):
self.on_key_press(key.LEFT,512)
...
但是sprite很容易超出屏幕边界,有没有办法让sprite沿着这个方向有控制的移动?
如何调用函数keep_going
?如果它在一个简单的循环中,那么它被调用得太频繁并且精灵可能移动得太快以至于它立即消失。
我假设您的代码中的 self
是某个层。您可以将函数的签名更改为 def keep_going(self, dt, DIRECTION)
,然后,例如在层的构造函数中,调用 self.schedule_interval(self.keep_going, 0.1, 'left')
以每秒更新精灵的位置 10 次。
另一种可能性是使用 schedule 函数,该函数将函数安排为 运行 不断,而不是固定间隔。在那种情况下,您必须更多地修改您的功能。我建议根据输入为精灵设置速度,然后以像素为单位计算新位置。 samples/balldrive_toy_game/balldrive_toy_game.py
中的 cocos 包中有一个很好的例子如果你想使用动作,Move动作很适合。