vrJoystick 演示

joystick.py

print("Executing move script!")

newScene()

def moveLeft(node, step):
    pos = node.getTranslation()
    node.setTranslation(pos[0] - step, pos[1], pos[2])

def moveRight(node, step):
    pos = node.getTranslation()
    node.setTranslation(pos[0] + step, pos[1], pos[2])

def moveUp(node, step):
    pos = node.getTranslation()
    node.setTranslation(pos[0], pos[1] + step, pos[2])

def moveDown(node, step):
    pos = node.getTranslation()
    node.setTranslation(pos[0], pos[1] - step, pos[2])

def movedJoystick(js, node):
    #print js.getButtons()
    #print js.getAxes()

    # move speed
    step = 0.1

    # buttons
    buttons = js.getButtons()

    if buttons & 8:
        moveLeft(node, step)
    if buttons & 2:
        moveRight(node, step)
    if buttons & 1:
        moveUp(node, step)
    if buttons & 4:
        moveDown(node, step)

    # analog stick
    axes = js.getAxes()
    if len(axes) >= 2:
        if axes[0] < 0.0:
            moveLeft(node, abs(axes[0] * step))
        if axes[0] > 0.0:
            moveRight(node, abs(axes[0] * step))
        if axes[1] < 0.0:
            moveUp(node, abs(axes[1] * step))
        if axes[1] > 0.0:
            moveDown(node, abs(axes[1] * step))

loadGeometry("$VRED_EXAMPLES/geo/cube.osb")
updateScene()
setFromAtUp(0, 0.5,0.5,8,  0.5,0.5,0.5,  0,1,0)

# Searches for the node via regular expression.
cube = findNode("*cube*", true);
cube.makeTransform()

joystick = vrJoystick()
joystick.connect(movedJoystick, joystick, cube)

vrLogWarning("Use your joystick to move the object.")