PDA

View Full Version : moving object forward backward


Zword
01-13-2011, 04:51 AM
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:


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:


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:
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