Search code examples
timervizard

Am I using 'ontimer' incorrectly in Vizard?


I am very new to programming in Vizard, but I am a pretty strong .js programmer. I have an art gallery and I want a man to walk from picture to picture. He needs to wait for a few seconds at each picture.

So I have a number of walking sequences and I'm trying to use the 'ontimer' function to call the next walk sequence and also add a few seconds of delay.

It works perfectly the first time it is called, in dostuff(), but doesn't work at all in dostuff2(). I assume I am using 'ontimer' incorrectly, could anyone explain where I am going wrong?

Any help or advice would be hugely appreciated!

walkOne = vizact.walkto(4, -0.5, 4)
turnOne = vizact.turn(60)
walking_sequence = vizact.sequence( [walkOne, turnOne])


walkTwo = vizact.walkto(5.350, -0.5, -2)
turnTwo = vizact.turn(60)
walking_sequenceTwo = vizact.sequence( [walkTwo, turnTwo])


def dostuff():  
    male.addAction(walking_sequence)
    vizact.ontimer(10,dostuff2)

def dostuff2():
    male.addAction(walking_sequenceTwo)
    print(vizact.ontimer)
    vizact.ontimer(20,dostuff)

Solution

  • Cracked it!! Got rid of the ontimer completely and used waittimer instead, seems to work ok.

    walkOne = vizact.walkto(4, -0.5, 4)
    turnOne = vizact.turn(60)
    walking_sequence = vizact.sequence(walkOne, turnOne, vizact.waittime(10))
    
    walkTwo = vizact.walkto(5.350, -0.5, -2)
    turnTwo = vizact.turn(60)
    walking_sequenceTwo = vizact.sequence(walkTwo, turnTwo, vizact.waittime(10))
    
    def dostuff():  
        male.addAction(walking_sequence)
        dostuff2()
    
    def dostuff2():
        male.addAction(walking_sequenceTwo)
        dostuff3()