View Single Post
  #3  
Old 01-03-2014, 01:37 AM
Frank Verberne Frank Verberne is offline
Member
 
Join Date: Mar 2008
Location: Netherlands
Posts: 148
I think this should fix your problem:
Code:
import viz
import viztask
import vizact

viz.go()
viz.eyeheight(0)
viz.MainView.setPosition(0,0,-4)

car1 = viz.add('box.wrl')
rim1 = viz.add('box.wrl', color = [0,0,1])
car2 = viz.add('box.wrl', color = [1,0,1])
rim2 = viz.add('box.wrl', color = [0,1,0])

action1 = vizact.spin(0,0,1,60)
action2 = vizact.moveTo([-2,0,2],speed=2.00, interpolate=vizact.easeOut)
action3 = vizact.moveTo([-2,0,2],speed=4.00, interpolate=vizact.easeOut)

def actionTime():
	rim1.addAction(action1,0)
	rim2.addAction(action1,0)
	car1.addAction(action2,0)
	car2.addAction(action3,0)
	
vizact.onkeydown(' ', actionTime)
	
def onActionEnd(e):
	if e.object is car1:
		rim1.endAction(0)
	elif e.object is car2:
		rim2.endAction(0)

viz.callback(viz.ACTION_END_EVENT,onActionEnd)
In this example, the green box (rim2) is the rim of the purple box (car2), and the blue box (rim1) is the rim of the red box (car1). The red and purple box arrive at different times at the end position, and the rotation of their rims stop accordingly. Replace the boxes with your appropriate models, and you should be good to go!

Last edited by Frank Verberne; 01-03-2014 at 01:43 AM. Reason: improved readability of code
Reply With Quote