#1
|
|||
|
|||
when a sensor moves over some other object
Hello,
Still kind of new to python language. Lets say I have a "white_ball.wrl"(ball) that is linked to a ppt sensor. And I have a block that is located at position (10,0,0). What I want to happen is if the ball moves over to position (10,0,0) the block will have a new set position at (10,-10,0). The ball can be at any level on the y-axis by the way. I only want to worry about where the ball is on the x and z axis. What I need to know: What do I have to do to compare the position of the ball == to the position of the block(keeping in mind that there is a surface area on the block of unknown size.)? After it compares the two to see if the ball is over the area of the block, how do I set the position of the block. Any help will be much appreciated. Thank You |
#2
|
|||
|
|||
you could use viz.intersect and have your line start just below the ball and then go straight down far enough to cross the plane the block is in. If an intersection happens then you reset the position of the block. Something like this.
Code:
def moveBlock(): x,y,z = ball.getPosition() info = viz.intersect([x,y-1,z],[x,y-5,z]) if info.valid: info.object.setPosition([0,-10,0], viz.REL_LOCAL) vizact.ontimer(0,moveBlock) |
#3
|
|||
|
|||
Ok thanks for the quick response. Now if I set my pillars(the blocks) like this, can I impliment the same code that was posted above into this... or do I have to construct it differently?
Code:
columns = [-20, -10, 0, 10, 20] rows = [0, 6, 12, 18] pillars = [] for x in columns: #creates an array of pillars for y in rows: pillar = OrginalPillar.copy() pillar.translate(0+x, 0, 0+y) pillar.setScale(1,1,1) pillar.visible(viz.OFF) pillars.append(pillar) number = 0 def showPillar(): globae number pillars[number.visible(viz.ON) number += 1 vizact.ontimer2(.5,len(pillars)-1,showPillar) |
#4
|
|||
|
|||
that should work as long as the line you draw from the ball is long enought to make it through the y coordinate of the block plane. If the line you draw is long and an intersection occurs again on the same object, it will move down again. So you might want to check for that.
|
|
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
retrieve Object names | Geoffrey | Vizard | 11 | 12-11-2009 04:26 AM |
Can you link the position of a tracker to the orientation of an object? | michaelrepucci | Vizard | 1 | 09-19-2008 10:23 AM |
Child Object Rotation | paulgoldberg | Vizard | 5 | 09-05-2006 11:33 AM |
when collision mode is on, can i "turn it off" for an individual object? | Vdoug | Vizard | 1 | 09-22-2005 12:14 PM |
rotate to object | jargon | Vizard | 1 | 08-08-2005 12:20 PM |