mouse_drag.py
Maus bewegt Kugel immer nur in einer fixen Ebene (wichtig für Spielideen ähnlich Schach, Schiffe versenken, ...)
mouse_drag.py — text/python-source, 1 KB (1516 bytes)
Dateiinhalt
# -*- coding: utf-8 -*-
# visual - mouse drag
from visual import *
scene.range = 5
ball = sphere(pos=(-3,0,0), color=color.cyan) # blaue Kugel
cube = box(pos=(+3,0,0), size=(2,2,2), color=color.red) # roter Würfel
pick = None # Variable zeigt Mauskontakt
while True:
rate(100)
if scene.mouse.events: # falls Maustaste gedrückt...
m1 = scene.mouse.getevent() # event in m1 speichern
if m1.drag and m1.pick == ball: # falls Mauskontakt mit Objekt
drag_pos = m1.pickpos # speichern der Kontaktkoordinaten in drag_pos
pick = m1.pick # pick gesetzt
elif m1.drop: # falls Maustaste losgelassen...
ball.opacity=1 # Transparenz deaktiviert
pick = None # Mauskontakt vorüber
if pick: # falls Mauskontakt...
new_pos = scene.mouse.project(normal=(0,0,1)) # Neuposition immer in xy-Ebene..
ball.opacity=0.2 # Kugel transparent
if new_pos != drag_pos: # falls Neuposition ungleich Mauspos...
pick.pos += new_pos - drag_pos # aktualisiert pickpos
drag_pos = new_pos # aktualisiert dragpos