Blitz 3d Drag and Drop

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

ZaRaK

Betreff: Blitz 3d Drag and Drop

BeitragMi, Mai 23, 2007 19:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,
ich versuche seit mehreren stunden selbstständig zu einer lösung zu kommen, allerdings bin ich kläglich gescheitert und weiss nich mehr weiter...

ich möchte 3d items verschieben (zb aus einem inventar heraus auf einen anderen gegenstand ziehen), aber das ganze will nich so, wie ich möchte...

Zitat:

Graphics3D 640, 480
SetBuffer BackBuffer()
Global camera=CreateCamera()
PositionEntity camera, 0, 0, -10
Global box=LoadMesh( "box.b3d" )
ScaleEntity box, 0.05, 0.05, 0.05

EntityPickMode box,2

While Not KeyHit(1)

mx=MouseX()
my=MouseY()

entity=CameraPick(camera,mx,my)

If entity=0 Then EntityColor box,255,255,255
If entity<>0 Then EntityColor box,0,255,0

TurnEntity box, 0.5, 0.5, 0.5


If KeyDown(208) Then TurnEntity camera, 1, 0, 0
If KeyDown(200) Then TurnEntity camera, -1, 0, 0
If KeyDown(203) Then TurnEntity camera, 0, 1, 0
If KeyDown(205) Then TurnEntity camera, 0, -1, 0


If MouseHit(1) Then PositionEntity box, x, y, z
(für diese werte hab ich schon etliches versucht, aber kam nie zu einer lösung (ich hab im nachhinein mit positionentity probiert um wenigstens hinzukriegen das das objekt sich nach einem klick am cursor befindet).. mousex und mousey erschien mir am logischsten, aber da hüpft das objekt nicht an die mx/my, sondern im raum an diese position, die verdammt weit weg is)


UpdateWorld
RenderWorld

Text 0,15,"Maus X = " +mx
Text 0,30,"Maus Y = " +my

Text 0,60,"Box X = " +EntityX(box)
Text 0,75,"Box Y = " +EntityY(box)
Text 0,90,"Box Z = " +EntityZ(box)

Flip
Wend


ich hoffe jemand von euch weiss rat :]
schonma danke im vorraus

Tankbuster

BeitragMi, Mai 23, 2007 19:53
Antworten mit Zitat
Benutzer-Profile anzeigen
-.-
schonmal was von PickedX, PickedY und PickedZ gehört ??
Also damit müsstest du das GUT hinkriegen!
Twitter
Download Jewel Snake!
Windows|Android
 

ZaRaK

BeitragMi, Mai 23, 2007 20:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Tankbuster hat Folgendes geschrieben:

schonmal was von PickedX, PickedY und PickedZ gehört ??


ja, allerdings war mir die anwendung schleierhaft.. aber jetz funktionierts, vielen dank

The_Nici

BeitragMi, Mai 23, 2007 20:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Gleiches Problem->BlitzBase durchgelesen->mehrere male->Checks net...
 

ZaRaK

BeitragMi, Mai 23, 2007 20:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
Graphics3D 640, 480
SetBuffer BackBuffer()
Global camera=CreateCamera()
PositionEntity camera, 0, 0, -10


Global box=LoadMesh( "box.b3d" )
PositionEntity box, -5,0,0
ScaleEntity box, 0.05, 0.05, 0.05
EntityPickMode box,2


While Not KeyHit(1)

mx=MouseX()
my=MouseY()

entity=CameraPick(camera,mx,my)

If entity=0 Then EntityColor box,255,255,255
If entity<>0 Then EntityColor box,0,255,0

TurnEntity box, 0.5, 0.5, 0.5


If MouseDown(1) Then PositionEntity box, PickedX(), PickedY(),0


UpdateWorld
RenderWorld

Text 0,15,"Maus X = " +mx
Text 0,30,"Maus Y = " +my

Text 0,120,"Picked X = " +PickedX()
Text 0,135,"Picked Y = " +PickedY()
Text 0,150,"Picked Z = " +PickedZ()


If entity<>0 Then Text mx+15, my, +box

Flip
Wend


so funktionierts jetz...
allerdings hab ich nun 2 weitere probleme...

1. wenn ich die kamera dreh, bewegt sich das objekt nicht der camx/camy entlang (somit schieb ich das dann nach vorne/hinten, und nicht links/rechts)

2. wie kann ich jetzt mehrere objekte verwenden?
mir steht ja irgendwie bloss 1 entity zur verfügung (entity=CameraPick(camera,mx,my))...
sry wenn ich mich unklar ausdrück, aber bin im mom schwer verpeilt..

Tankbuster

BeitragMi, Mai 23, 2007 21:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Entweder mit einem Array, was ich aber nicht empfehlen würde, oder mit TYPES!

Zitat:
1. wenn ich die kamera dreh, bewegt sich das objekt nicht der camx/camy entlang (somit schieb ich das dann nach vorne/hinten, und nicht links/rechts)

Das liegt daran, das du immer nur nach PickedX und PickedY fragst, aber nie nach PickedZ! Da würde es aber bei deinem Code das Problem geben, das der Würfel immer näher kommt!
Aber das liegt nur daran, das du beim Würfel EntityPickMode eingestellt hast! Ich würde da ein Sprite oder eine Fläche in den Hintergrung setzten, auf der Du dann EntityPickMode einstellst!!
Twitter
Download Jewel Snake!
Windows|Android
 

ZaRaK

BeitragDo, Mai 24, 2007 15:03
Antworten mit Zitat
Benutzer-Profile anzeigen
alles klar, werds mal versuchen, danke :]

The_Nici

BeitragDo, Mai 24, 2007 16:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Auf meinen post hat wohl niemand geantwortet 0o

Nochmals: Ich will die X/Y Achse eines Objekts immer auf die Maus ausrichten. muss wohl mit Picked gehen, aber irgendwie brauch ich Hilfe. hab BlitzBase Artikel gelesen, gelesen, und nochmals gelesen, aber ich schaffs immer noch nicht 0o
 

ZaRaK

BeitragDo, Mai 24, 2007 16:19
Antworten mit Zitat
Benutzer-Profile anzeigen
The_Nici hat Folgendes geschrieben:
Auf meinen post hat wohl niemand geantwortet 0o

Nochmals: Ich will die X/Y Achse eines Objekts immer auf die Maus ausrichten. muss wohl mit Picked gehen, aber irgendwie brauch ich Hilfe. hab BlitzBase Artikel gelesen, gelesen, und nochmals gelesen, aber ich schaffs immer noch nicht 0o



If MouseDown(1) Then PositionEntity MESH, PickedX(), PickedY(),0


damit hab ichs hingekriegt...

The_Nici

BeitragDo, Mai 24, 2007 20:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Bei mir verschwindet das Objekt spuhrlos...
 

ZaRaK

BeitragFr, Mai 25, 2007 6:39
Antworten mit Zitat
Benutzer-Profile anzeigen
The_Nici hat Folgendes geschrieben:
Bei mir verschwindet das Objekt spuhrlos...



du musst PositionEntity verwenden, falls du MoveEntity benutzt hüpft das objekt extrem weit weg ^^

am besten postest du ma deinen kompletten code, dann könnte man das besser nachvollziehen

The_Nici

BeitragFr, Mai 25, 2007 8:03
Antworten mit Zitat
Benutzer-Profile anzeigen
PositionEntity p\handr, PickedX(), PickedY(),0
If EntityX(p\handr) > EntityX(p\sphere)+2.7 Then PositionEntity p\handr, EntityX(p\handr)+2.5,EntityY(p\handr),0
If EntityY(p\handr) > EntityY(p\sphere)-2.7 Then PositionEntity p\handr, EntityX(p\handr),EntityY(p\sphere)-2.5,0

Noch nicht ganz fertig.

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group