WorldViz User Forum

WorldViz User Forum (https://forum.worldviz.com/index.php)
-   Vizard (https://forum.worldviz.com/forumdisplay.php?f=17)
-   -   moving object forward backward (https://forum.worldviz.com/showthread.php?t=3338)

Zword 01-13-2011 04:51 AM

moving object forward backward
 
When the mouse is pointed at the object I want to move it depending on wich key i press. A normal int number works but example +=0.5 does not work.

Code:


Code:

cube = vizshape.addCube()

def moveForward():
        object = viz.pick()
        if object.valid():
                pos += 10
                object.setPosition([pos],0,0)
                print 'move backward'

vizact.onkeydown( 'w', moveForward )

def moveBackward ():
        object = viz.pick()
        if object.valid():
                pos += 10
                object.setPosition([pos],0,0)
        print 'move forward'
       
vizact.onkeydown( 's', moveBackward )


masaki 01-13-2011 11:17 AM

hello,

the setPosition command accepts lists in [x,y,z] format so try object.setPosition([pos,0,0]). if you're trying to go forward and backward, that's normally along the z-axis so you might want to change it to ([0,0,pos]).

Masaki

Zword 01-16-2011 04:43 AM

That is not working. This is the error I get:

Traceback (most recent call last):
File "C:\Program Files (x86)\WorldViz\Vizard30/python\vizact.py", line 3019, in __onkeydown
self._callGroup(self.__keydownmap[key])
File "C:\Program Files (x86)\WorldViz\Vizard30/python\vizact.py", line 2971, in _callGroup
val = e.call(arg)
File "C:\Program Files (x86)\WorldViz\Vizard30/python\vizact.py", line 2794, in _callStatic
return func(*args,**kwargs)
File "Test wall.py", line 39, in moveForward
pos += 0.5
UnboundLocalError: local variable 'pos' referenced before assignment


My code:

Code:

def moveForward():
        object = viz.pick()
        pos += 0.5
        if object.valid():
                object.setPosition([pos,0,0])
                viz.callback(viz.COLLIDE_BEGIN_EVENT,oncollide)

vizact.onkeydown( 'w', moveForward


Jeff 01-18-2011 12:08 PM

You need to assign a value to pos before you add to it:
Code:

import viz
import vizshape
import vizact
viz.go()

cube = vizshape.addCube()
cube.setPosition([0,1.5,3])

pos = 3

def moveForward():
    global pos
    object = viz.pick()
    if object.valid():
        pos += 0.5
        object.setPosition([0,1.5,pos])
        print 'move forward'

vizact.onkeydown( 'w', moveForward )

def moveBackward ():
    global pos
    object = viz.pick()
    if object.valid():
        pos -= 0.5
        object.setPosition([0,1.5,pos])
    print 'move backward'
   
vizact.onkeydown( 's', moveBackward )


Zword 01-20-2011 08:21 AM

Tnx it worked. Tnx for your time


All times are GMT -7. The time now is 11:12 PM.

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