首页 > 解决方案 > 由于某些原因。与 x 轴上的瓷砖碰撞后,滚动变得混乱。从y轴滚动很好

问题描述

滚动代码:(ps它影响瓷砖x和y +字符x和y)

        scroll[0]+=(atom.rect.x-scroll[0]-(width/2)+50)/20
        scroll[1]+=(atom.rect.y-scroll[1]-(height/2)+50)/20

碰撞代码:

def collision_move(rect,movement,tiles):
    collision_types={"Top":False,"Bottom":False,"Left":False,"Right":False}
    rect_temp=pygame.Rect(rect.x,rect.y,atom.width,atom.height-1)
    rect_temp.x+=movement[0]
    hit_list=collision_test(rect_temp,tiles)
    for tile in hit_list:
        rect.x+=movement[0]
        if movement[0]>0:
            rect.right=tile.left
            collision_types["Right"]=True
        elif movement[0]<0:
            rect.left=tile.right
            collision_types["Left"]=True
    rect_temp=pygame.Rect(rect.x,rect.y,atom.width,atom.height)
    rect_temp.y+=movement[1]
    hit_list=collision_test(rect_temp,tiles)
    for tile in hit_list:
        rect.y+=movement[1]
        if movement[1]>0:
            rect.bottom=tile.top
            collision_types["Bottom"]=True
        elif movement[1]<0:
            rect.top=tile.bottom
            collision_types["Top"]=True
    return rect,collision_types

运动就像 1,2,3,4,5,6 以 1 比 1 加速,直到达到 6,这取决于它的方向。

标签: pythonscrollpygamecollision

解决方案


我想通了并补充说:

if collisions["Right"]==False or collisions["Left"]:
        scroll[0]+=(atom.rect.x-scroll[0]-(width/2)+50)
scroll[1]+=(atom.rect.y-scroll[1]-(height/2)+50)

修复 x 和 y 的碰撞,最后完成我的碰撞和滚动!


推荐阅读