#1
|
|||
|
|||
Tasks
I am using collision detection between Box1 and Box2 to count ball lob in a game. I am struggling to calculate balls number depends on this specific collision. I know I have to use function of the collision to do so.
I do not know how I can send information to the task1 from collision function to start add 1 to ball, the code I am using to do so as follows: To detect the collision between Box1 and Box2 I am using the following code: Code:
def onCollideBegin(e): if e.obj1 == box1 and e.obj2== box2: print e.obj1 , “ ,” , e.obj2 viz.callback(viz.COLLIDE_BEGIN_EVENT,onCollideBegin) Code:
ball=0 def task1(): global ball while ball <4: yield viztask.waitEvent(viz.COLLIDE_BEGIN_EVENT) ball +=1 print 'Number of Balls is : ',sball Code:
balllob = viztask.waitTask( task1()) Thanks, |
#2
|
|||
|
|||
You could try creating your own custom event that gets generated whenever certain objects collide. Then in your task function wait for that custom event and increment your counter after that occurs.
|
#3
|
|||
|
|||
Thanks for this, and it is understood
I tried to do the following but still incorrect Code:
def onCollideBegin(e): if e.obj1 == box1 and e.obj2== box2: print e.obj1 , “ ,” , e.obj2 action=vizact.call( task1()) viz.callback(viz.COLLIDE_BEGIN_EVENT,onCollideBegin) ball=0 def task1(): global ball while ball <4: yield viztask.waitEvent(action) ball +=1 print 'Number of Balls is : ',ball Any help? |
#4
|
|||
|
|||
I have tried to use box1.collidingwith(box2) but this made the game meet the condition once I run the code
Code:
ball=0 def task1(): global ball while ball <4: action=box1.collidingwith(box2) yield viztask.waitEvent(action) ball +=1 print 'Number of Balls is : ',ball |
#5
|
|||
|
|||
There a few ways you could do this. You could use viztask's signal and wait functions and send a signal when the collision of those objects occurs within your onCollideBegin function. Then wait for that signal in your task function.
Or you could create a custom event that is generated when those two objects collide and wait for that event in your task function. The docs describe how to create a custom event. |
#6
|
|||
|
|||
Well, what is I can not do it in Vizard to send a signal from the function to the task.
may you can gipost an example of this (sending a signal from a fuction to a task)? I do not find any on the documentation |
#7
|
|||
|
|||
Take a look toward the bottom of the following page. There is an example there for using signalling with tasks.
http://www.worldviz.com/vizhelp/VizTask_basics.htm |
|
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
Tasks | Moh200jo | Vizard | 1 | 02-23-2009 10:57 AM |
Vizard Tip of the Month: Use Tasks to Simplify your Code | Gladsomebeast | Vizard | 5 | 05-02-2008 04:30 PM |