WorldViz User Forum

WorldViz User Forum (https://forum.worldviz.com/index.php)
-   Vizard (https://forum.worldviz.com/forumdisplay.php?f=17)
-   -   Stop avatar from walking to its destination (https://forum.worldviz.com/showthread.php?t=6154)

hannahapz 06-15-2018 11:01 AM

Stop avatar from walking to its destination
 
I'm fairly new to Python and Vizard, so the answer to this may be strikingly obvious to some.

I'm trying to stop my pedestrian avatar from walking to a final location as soon as I enter within the bounds of its proximity sensor.

My current code is as follows You can assume I've done all necessary module imports:

Code:

def set_avatar_proximity_sensor():
        global manager, sensor
        manager = vizproximity.Manager()
        manager.setDebug(viz.ON)

        target = vizproximity.Target(Me)
        manager.addTarget(target)
       
        sensor = vizproximity.addBoundingSphereSensor(pedestrian,scale=2)
        manager.addSensor(sensor)
       
        vizact.onkeydown('d',manager.setDebug,viz.TOGGLE)
       
def pedestrian_actions():
        runAction = vizact.walkTo( [-12, 0, 3] )
        pedestrian.addAction (runAction)

def enter_proximity(e):
        runAction = vizact.walkTo( [-12, 0, 3] )
        pedestrian.addAction (runAction)

set_avatar_proximity_sensor()
vizact.ontimer(0, pedestrian_actions)
manager.onEnter(sensor, enter_proximity)

So, right now, the enter_proximity function is obeyed only after the pedestrian_action function has ended. How do I interrupt the pedestrian_action function however?

hannahapz 06-15-2018 05:27 PM

I've been able to stop the animation of the avatar's body using an if statement, but otherwise have not been able to stop the avatar's trajectory to a destination.

hannahapz 06-15-2018 08:38 PM

Solved
 
I solved the issue with a simple if-elif statement

Code:

def pedestrian_actions():
        ped_position = pedestrian.getPosition()
        car_position = car.getPosition()
        distance = vizmat.Distance(ped_position, car_position)
        runAction = vizact.walkTo( [-12, 0, 3] )
        print(distance)
       
        if distance > 4:
                pedestrian.addAction (runAction)
        elif distance < 2:
                pedestrian.clearActions()



All times are GMT -7. The time now is 02:30 PM.

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