我工作的pygame的游戏,并试图实现游戏的介绍。我希望有两个角色四处移动并说话,玩家需要按空间向前移动对话并让介绍动画继续。编程游戏介绍动画
虽然我没有问题,而在游戏主循环(使用密钥作为输入),实施前奏“动画”被证明是比我想很难移动在屏幕上的主角。
我的本意是为这两个字符走在屏幕上不同的地方,并停止,而他们交谈。然后开始在不同的方向再走,等
下面是现在我实现,但它不工作,我所期望的代码,游戏时间过长有时加载,因为我加入这个新的组成部分,也是因为它不是一个循环运动(不像我的主要游戏循环中那样是一个重复的while循环),而是一系列相当定义的事件,我不知道如何处理它。
我一直在做的是从main_loop
函数(这是我的主While循环中的函数)调用一个函数intro
。我注意到因为我没有运行重复循环,刷新不能正常工作,我必须多次调用我的更新(或翻转)显示,以避免字符离开屏幕上的前一个位置,但它反正仍然发生)。再次,整个事情真的很慢。
def intro():
#VARIABLES
P1_x = 280 #starting position
P1_y = 380 #starting position
P1_dir = 3 #for the player sprite sheet loading
NPC_x = 240
NPC_y = 280
NPC_dir = 2
#LOAD PLAYER CLASSES
P1 = player(P1_x, P1_y, P1_dir)
P2 = npc(NPC_x, NPC_y, NPC_dir)
gameDisplay.fill(black)
#DRAW BACKGROUND MAP PLUS BACKGROUND OBJECTS
draw_layer(intro_int_matrix, house_tiles, house_tiles_W, house_tiles_H)
draw_layer_2(intro_int_matrix_2, intro_house_2, intro_house_2_W, intro_house_2_H)
#LOOP (TRIED WITH "WHILE" ALSO) TO MAKE THE PLAYER MOVE A BIT IN A DIRECTION AND THEN STOP
for i in range (5):
P1.update(3, 0, P1_dir) #THE 3 IS THE DISTANCE TO MOVE IN X-AXIS, and 0 in Y axis
pygame.display.update()
pygame.time.delay(300) #TRIED ADDING A DELAY SO IT DOES NOT MOVE TOO FAST BUT DOES NOT HELP MUCH
#THE IDEA OF SETTING X AND Y TO 0 IS TO STOP THE MOVEMENT
P1.update(0, 0, P2_dir)
draw_layer(intro_int_matrix, house_tiles, house_tiles_W, house_tiles_H)
draw_layer_2(intro_int_matrix_2, intro_house_2, intro_house_2_W, intro_house_2_H)
pygame.display.update()
pygame.time.delay(1000)
#SHOW DIALOGUE....AND WAIT FOR "SPACE" INPUT
#THEN I WILL INCLUDE ANOTHER "FOR" LOOP TO KEEP ON MOVING TO A DIFFERENT POSITION AND CALLING THE DIALOGUE IN BETWEEN ETC, BUT I WANT TO SOLVE THE MOVEMENT PART FIRST.
编辑:我已经成功通过简单地在我的高清介绍使用While循环(),然后使用内解决这个问题的几种IF是那些获得由两个条件触发声明:1,步骤数字(允许我跟踪动画实例)和2,get_ticks()数字,它允许我控制动画的速度。然后由于While循环,通过在我刚刚提到的IF语句中使用额外的IF语句,所有事情都会重复X次。希望这个问题很容易理解。
欢迎来到[so]。你自己解决这个问题很好。作为问答网站,您可以*并鼓励*在下面的答案框中发布您的答案。记住,问题框是针对问题的,答案框是答案。谢谢! –