Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Vidle for python中设置第二个对象的动画_Python - Fatal编程技术网

如何在Vidle for python中设置第二个对象的动画

如何在Vidle for python中设置第二个对象的动画,python,Python,这更多的是练习,而不是家庭作业,但是VIDLE python中的这段代码(作为示例代码)是关于球弹跳的。我想再加一个球,但它不会像其他球那样反弹。有人能帮我吗?和或添加另一个对象?还有任何让它变得别致的小贴士……哦,还有谁能做个救生员,告诉我如何让它爆炸。没有声音(虽然声音会很好)只是爆炸。 代码如下: from visual import * floor = box(length=10, height=2, width=10, color=color.white) ball = box(l

这更多的是练习,而不是家庭作业,但是VIDLE python中的这段代码(作为示例代码)是关于球弹跳的。我想再加一个球,但它不会像其他球那样反弹。有人能帮我吗?和或添加另一个对象?还有任何让它变得别致的小贴士……哦,还有谁能做个救生员,告诉我如何让它爆炸。没有声音(虽然声音会很好)只是爆炸。 代码如下:

from visual import *

floor = box(length=10, height=2, width=10, color=color.white)

ball = box(length=2, height=2, width=2, pos=(0,4,0), color=color.yellow)
ball.velocity = vector(0,8,0)

ball2 = sphere(length=2, height=2, width=2, pos=(2,4,2), color=color.cyan,     material=materials.wood)
ball2.velocity = vector(1,8,1)
dt = 0.04
dt2 = 0.01

while 1:
 rate(100)
 ball.pos = ball.pos + ball.velocity*dt
 if ball.y < 1:
    ball.velocity.y = -ball.velocity.y
 else:
    ball.velocity.y = ball.velocity.y - 9.8*dt

while 1:
 rate(100)
 ball2.pos = ball2.pos + ball2.velocity*dt2
 if ball2.y < 1:
    ball2.velocity.y = -ball2.velocity.y
 else:        
    ball2.velocity.y = ball2.velocity.y - 9.8*dt2
来自可视导入的
*
地板=盒子(长度=10,高度=2,宽度=10,颜色=颜色。白色)
球=盒子(长度=2,高度=2,宽度=2,位置=(0,4,0),颜色=颜色。黄色)
ball.velocity=矢量(0,8,0)
ball2=球体(长度=2,高度=2,宽度=2,位置=(2,4,2),颜色=color.cyan,材质=materials.wood)
ball2.速度=矢量(1,8,1)
dt=0.04
dt2=0.01
而1:
费率(100)
ball.pos=ball.pos+ball.velocity*dt
如果ball.y<1:
ball.velocity.y=-ball.velocity.y
其他:
ball.velocity.y=ball.velocity.y-9.8*dt
而1:
费率(100)
ball2.pos=ball2.pos+ball2.velocity*dt2
如果ball2.y<1:
ball2.velocity.y=-ball2.velocity.y
其他:
ball2.velocity.y=ball2.velocity.y-9.8*dt2
当1:循环时,您的代码“卡在”第一个

看看你的代码,问问自己“这段代码什么时候运行”?大约第二个while循环

答案是“永远不会”,因为它一直绕着第一个循环

你只需要一个圈来处理两个球,而不是一个圈来处理一个球,然后另一个圈来处理另一个球

while 1:
 rate(100)
 ball.pos = ball.pos + ball.velocity*dt
 if ball.y < 1:
    ball.velocity.y = -ball.velocity.y
 else:
    ball.velocity.y = ball.velocity.y - 9.8*dt

 ball2.pos = ball2.pos + ball2.velocity*dt2
 if ball2.y < 1:
    ball2.velocity.y = -ball2.velocity.y
 else:        
    ball2.velocity.y = ball2.velocity.y - 9.8*dt2
而1:
费率(100)
ball.pos=ball.pos+ball.velocity*dt
如果ball.y<1:
ball.velocity.y=-ball.velocity.y
其他:
ball.velocity.y=ball.velocity.y-9.8*dt
ball2.pos=ball2.pos+ball2.velocity*dt2
如果ball2.y<1:
ball2.velocity.y=-ball2.velocity.y
其他:
ball2.velocity.y=ball2.velocity.y-9.8*dt2

谁能做个救生员,告诉我怎么让它爆炸

在堆栈溢出问题上,每个问题只能得到一个问题;)


关于分解:在进行分解之前,您需要更加熟悉python的基础知识(比如循环是如何工作的)。

这里是一件事,我对循环很熟悉,只是整个建模对我来说都是新的,我有一个用于同一类的其他硬件,这让整个类都感到困惑。我觉得学这个很有趣。但是你能告诉我从哪里开始爆炸吗?你需要创建所有爆炸的碎片,然后设置它们分开和消失的动画。在VPython调色板中,最好使用红点(“点”)来实现这一点,从球的位置快速向外移动,然后移除。。。这只是一种尝试……不客气。在StackOverflow,表达感谢的方式是向上投票,并通过点击勾号接受答案(如果答案对你来说是正确的)。