|
#1
|
|||
|
|||
avatar walkto interrupt
Hello,
This maybeIs there a way to stop an avatar that's walking from point A to point B "dead in it's tracks"? My code untill now looks somewhat like this: Code:
def walk1(): yield viztask.waitKeyDown( ' ' ) yield viztask.addAction(avatar, vizact.walkTo([pointA])) yield viztask.addAction(avatar, vizact.walkTo([pointB])) yield viztask.addAction(avatar, vizact.walkTo([pointC])) avatar.state(14) yield viztask.waitTime(10) viztask.schedule(walk2()) def walk2(): yield viztask.waitKeyDown( ' ' ) yield viztask.addAction(avatar, vizact.walkTo([pointD])) yield viztask.addAction(avatar, vizact.walkTo([pointE])) avatar.state(14) yield viztask.waitTime(10) #main viztask.schedule(walk1()) |
#2
|
|||
|
|||
In the following example the spacebar is used to start and stop the avatar as he walks between two points:
Code:
import viz import viztask import vizact viz.go() viz.add('ground.osgb') avatar = viz.addAvatar('vcc_male2.cfg',pos=[0,0,9]) avatar.state(1) walkLeft = vizact.walkTo([2.5,0,9]) walkRight = vizact.walkTo([-2.5,0,9]) walkActions = viz.cycle([walkLeft,walkRight]) waitSpaceBar = viztask.waitKeyDown(' ') waitLeft = viztask.waitActionEnd(avatar,walkLeft) waitRight = viztask.waitActionEnd(avatar,walkRight) waitActions = viz.cycle([waitLeft,waitRight]) def walkAndStopTask(): yield waitSpaceBar while True: condition = waitSpaceBar walkAction = walkActions.next() waitAction = waitActions.next() while condition == waitSpaceBar: avatar.runAction(walkAction) d = yield viztask.waitAny([waitSpaceBar,waitAction]) condition = d.condition if condition == waitSpaceBar: avatar.clearActions() yield waitSpaceBar viztask.schedule(walkAndStopTask()) Last edited by Jeff; 03-14-2013 at 07:08 AM. |
#3
|
|||
|
|||
Thanks for your reply Jeff. I've tried the "clearactions()" statement.
However, since i'm using schedule to arrange the actions, i have to kill that as well to prevent the other walking actions from running. I've tried this: Code:
def walk1(): yield viztask.waitKeyDown( ' ' ) yield viztask.addAction(avatar, vizact.walkTo([pointA])) yield viztask.addAction(avatar, vizact.walkTo([pointB])) yield viztask.addAction(avatar, vizact.walkTo([pointC])) avatar.state(14) yield viztask.waitTime(10) viztask.schedule(walk2()) def walk2(): yield viztask.waitKeyDown( ' ' ) yield viztask.addAction(avatar, vizact.walkTo([pointD])) yield viztask.addAction(avatar, vizact.walkTo([pointE])) avatar.state(14) yield viztask.waitTime(10) def stop(): avatar.clearactions(0) #main t = viztask.schedule(walk1()) vizact.onkeydown('l',t.kill) vizact.onkeydown('k',stop) Code:
def stop(): t.kill avatar.clearactions(0) vizact.onkeydown('k',stop) |
#4
|
|||
|
|||
Once the user stops the avatar, what is the next action that should be applied to the avatar? If the avatar stops on the way to PointA, should he pick up from the same place later and continue to PointA, or go to PointB, or should the whole task be ended?
|
#5
|
|||
|
|||
Jeff, i'm writing some software for a military simulation, the avatar actually gets shot and killed.
So the whole task should be ended, i would like the avatar to assume a specific state (lie down) and perform no actions anymore after that. |
#6
|
|||
|
|||
Not to sound too desperate, but i'm still having some difficulties with this. Does anybody perhaps have a suggestion for me?
|
#7
|
|||
|
|||
If you're waiting for either the walk action to finish or the keypress to occur you should use the viztask.waitAny command. Then if the event was a keypress you can leave the task using the return command:
Code:
d = yield viztask.waitAny([waitSpaceBar,waitAction]) condition = d.condition if condition == waitSpaceBar: avatar.clearActions() return |
Tags |
avatar, interrupt, stop, walkto |
|
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
Avatar & Motion Capture Interface | Angie | Vizard | 1 | 08-05-2010 06:17 PM |
avatar scale and link.setpos conflict? | sircedric4 | Vizard | 0 | 09-29-2009 07:48 AM |
Collision of an avatar with a quad | Frank Verberne | Vizard | 8 | 06-04-2008 09:44 AM |
Looking through the eyes of an avatar | Frank Verberne | Vizard | 2 | 04-01-2008 05:52 AM |
How to make avatar's eyes to blink when speaking | michelcm3 | Vizard | 12 | 01-15-2008 08:48 AM |