鱼C论坛

 找回密码
 立即注册
查看: 2476|回复: 8

pygame碰撞了哪只球?

[复制链接]
发表于 2018-1-6 12:50:28 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
《零基础入门学习Python》086Pygame 碰撞检测,部分代码如下:     

        for each in group:
            group.remove(each)

            if pygame.sprite.spritecollide(each, group, False, pygame.sprite.collide_circle):
                each.speed[0] = -each.speed[0]
                each.speed[1] = -each.speed[1]

            group.add(each)

小甲鱼老师将发生碰撞的小球速度取反,而我想让两只小球交换速度,请教:
问题1:
发生碰撞的另外一只小球是哪只?它的速度信息是怎样的?
问题2:
pygame.sprite.spritecollide(each, group, False, pygame.sprite.collide_circle)的返回值是个列表,
但是没什么有用的信息,总是一句:“[<Ball sprite(in 1 groups)>]”,如何获得列表更丰富的信息?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-1-6 13:22:02 | 显示全部楼层

回帖奖励 +3 鱼币

期待
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-1-6 16:59:04 | 显示全部楼层

回帖奖励 +3 鱼币

remove??你看看?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-6 17:23:19 | 显示全部楼层
喔,是我搞错了,感觉这个函数是一个布尔类型函数,碰撞则返回1,不碰撞则不触发 if语句,所以是没办法获取更多.
我建议,在这次迭代之前新创建一个空列表
再在这个列表迭代中将发生碰撞的小球,也同时加入这个新列表里面,
然后势必迭代后,新列表里会出现两个球,这个时候你用
speed1 = 新列表[0].speed()
speed2 = 新列表[1].speed()


新列表[0].speed() = speed2
新列表[1].speed() = speed1
新列表里的小球发生变化的同时,精灵组里的同名小球也会变化,因为它们是一个小球,但是赋值在不同位置而已
               
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-9 22:57:47 | 显示全部楼层

回帖奖励 +3 鱼币

《零基础入门学习Python》086Pygame 碰撞检测,部分代码如下:

86讲在哪里看,谢谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-11 19:07:14 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-11 20:20:59 | 显示全部楼层

回帖奖励 +3 鱼币

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-9-2 00:29:55 | 显示全部楼层

回帖奖励 +3 鱼币

四楼。。有道理
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-2 08:23:58 | 显示全部楼层
把group里的每个元素也像each一样,放入一个临时的组,检测这2个碰撞就行了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-12-26 23:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表