View Single Post
  #9  
Old 05-10-2009, 02:47 PM
Jeff Jeff is offline
WorldViz Team Member
 
Join Date: Aug 2008
Posts: 2,471
You could apply a small force opposite the direction the ball is moving. Here a function is called ten times, the first nine times getting the velocity of the ball and applying a small force opposite to it. On the tenth time the ball is stopped completely.
Code:
import viz
viz.go()
viz.phys.enable()

ground = viz.add('tut_ground.wrl')
ground.collidePlane()

ball = viz.add('ball.wrl', pos = [0,1,8])
ball.collideSphere()

ball.applyForce([2,0,10], .1)

num = 1
def slowBall():
	
	global num
	
	#slow down the ball
	if num <10:
		vx,vy,vz = ball.getVelocity()
		ball.applyForce([-vx,-vy,-vz], .01)
		num+=1
		
	#stop the ball	
	else: 	
		ball.setVelocity([0,0,0])
		ball.setAngularVelocity([0,0,0])

#call function 10 times
vizact.ontimer2(.3,9, slowBall)
Reply With Quote