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

时间:2014-11-04 02:37:17

标签: python

这比练习更多是练习工作,但是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

1 个答案:

答案 0 :(得分:0)

你的代码是&#34;卡住&#34;在第一个while 1:循环中。

查看您的代码并问自己&#34;此代码何时运行&#34;?关于第二个while循环。

答案是&#34;永远不会#34;因为它会继续绕过第一个循环。

你需要只有一个循环处理两个球,而不是一个循环用于一个球,然后另一个循环用于另一个球。

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

  

并且有些人可以成为救生员并告诉我如何让它爆炸

Stack Overflow上每个问题只能得到一个问题;)

关于爆炸:你需要在爆炸之前更熟悉python的基础知识(比如循环的工作原理)。