WorldViz User Forum  

Go Back   WorldViz User Forum > Vizard

Reply
 
Thread Tools Rate Thread Display Modes
  #1  
Old 01-05-2010, 08:53 AM
Moh200jo Moh200jo is offline
Member
 
Join Date: Feb 2009
Posts: 99
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)
if collision happened I have to add 1 to ball
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
In else where in the game function I am using the following line, the game function will quit the game if ball number is 4
Code:
balllob = viztask.waitTask( task1())
I guess I have to use the detection function, but I do not know how can I use it with many tasks relating to each other , as far as I realized Vizard’s documentation also dos not have this.
Thanks,
Reply With Quote
  #2  
Old 01-05-2010, 06:11 PM
Jeff Jeff is offline
WorldViz Team Member
 
Join Date: Aug 2008
Posts: 2,471
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.
Reply With Quote
  #3  
Old 01-07-2010, 09:59 AM
Moh200jo Moh200jo is offline
Member
 
Join Date: Feb 2009
Posts: 99
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
My problem I do not understand how can connect these functions
Any help?
Reply With Quote
  #4  
Old 01-08-2010, 04:34 AM
Moh200jo Moh200jo is offline
Member
 
Join Date: Feb 2009
Posts: 99
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
Reply With Quote
  #5  
Old 01-08-2010, 08:48 AM
Jeff Jeff is offline
WorldViz Team Member
 
Join Date: Aug 2008
Posts: 2,471
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.
Reply With Quote
  #6  
Old 01-08-2010, 11:53 AM
Moh200jo Moh200jo is offline
Member
 
Join Date: Feb 2009
Posts: 99
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
Reply With Quote
  #7  
Old 01-08-2010, 02:41 PM
Jeff Jeff is offline
WorldViz Team Member
 
Join Date: Aug 2008
Posts: 2,471
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
Reply With Quote
Reply

Thread Tools
Display Modes Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

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


All times are GMT -7. The time now is 04:14 AM.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Copyright 2002-2023 WorldViz LLC