python - 由于某些原因。与 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,这取决于它的方向。
解决方案
我想通了并补充说:
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 的碰撞,最后完成我的碰撞和滚动!
推荐阅读
- excel - 如何让 VBA 在 Microsoft Excel 安全通知的消息框中选择非默认选项?
- perl - 检查数组元素是否未从 XSUB 中定义
- datetime - 日期时间列 PowerBI 中的最早时间
- java - ArrayList,双包含
- c# - 如何在 Unity 2019 运行时在地形上绘制道路纹理
- ios - 使用 Xcode 11 构建旧版本的 React-Native 应用程序
- scala - writeStream() 正在批量打印空值数据,即使我通过 writeStream() 在 kafka 中提供了正确的 json 数据
- javascript - 为什么 ES6 导入对象的子对象返回未定义?
- json - 无效参数:JSON 必须包含“默认”或“APNS_SANDBOX”条目。=> Scala 中的 APNS 错误(提升框架)
- javascript - 我可以在 gitignore 中为 HUGO 项目添加捆绑的 main.js 文件吗?