微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么我的角色动画超出范围

如何解决为什么我的角色动画超出范围

我正在尝试使动画效果更适合我的角色。但是,当我运行游戏时,我按下键即可打孔,当动画完成时,游戏会出现错误

\Desktop\python projects\Ultamate Brawl\Ultamite BRAWL.py",line 41,in redrawGameWindow
   win.blit(PunchR[punchcount//2],(xcor,ycor))
       IndexError: list index out of range
[Finished in 6.4s]

我看着我的代码,看起来很好

def redrawGameWindow():
    global punchcount 
    global walkcount

    win.blit(bg,(-70,0))
    if walkcount + 1 >= 27:
        walkcount = 0
    if punch == True:
        if punchcount > 49:
            punchcount = 1
        win.blit(PunchR[punchcount//2],ycor))
        punchcount += 1
        
        
    elif isjump:
        win.blit(superjump,ycor))
    
    elif left:
        if walkcount > 49:
            walkcount = 1
        win.blit(walkLeft[walkcount//4],ycor))
        walkcount += 1

    elif right:
        win.blit(walkRight[walkcount//4],ycor))
        walkcount += 1
    else:
        win.blit(char,ycor))

    pygame.display.update()

解决方法

我建议按len()评估列表PunchR中的元素数量。如果订阅将超出范围,则设置punchcount=0。因此,您的算法与列表的长度无关:

if punchcount//2 >= len(PunchR):
    punchcount = 0
win.blit(PunchR[punchcount//2],(xcor,ycor))
punchcount += 1 

如果只想运行一次动画,则必须在到达列表末尾时设置punch = False

if punch == True:
    if punchcount//2 >= len(PunchR):
        punchcount = 0
        punch = False
    win.blit(PunchR[punchcount//2],ycor))
    punchcount += 1

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。