Mausbewegung auf Mesh auswirken
Übersicht

![]() |
PhillipBBetreff: Mausbewegung auf Mesh auswirken |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo nach langer Forensuche hab ich immer noch nicht das richtige gefunden!
Also ich will mit dem CameraPick und Mouse down erzihlen das ich ein Fenster aufschieben kann in diesem Fall ein Würfel erstmal. Doch ich habe keinen Plan wie ich das hinbekommen sollte Hie mein Code Code: [AUSKLAPPEN] Graphics3D 800,600,32,2
Fenster = LoadMesh("Model\Test\Fenstertest.3ds",Tram) EntityPickMode Fenster, 2 cam1=CreateCamera() PositionEntity cam1, -2.2355, 1.7946 , 6.6 RotateEntity cam1, 20, 0, 0 mausklick = MouseDown ( 1 ) While Not KeyHit (1) mx = MouseX() my = MouseY() Pick = CameraPick(cam1, mx, my) mausklick = MouseDown ( 1 ) If Pick<>0 And mausklick Then MoveEntity Fenster,PickedX, PickedY, PickedZ End If UpdateWorld Flip Wend End So ich hoffe es gibt so etwas nirgens im Forum trotz Suche ! Ich hoffe ihr könnt mir helfen. mfg PhillipB. |
||
bjh |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hi
du könntest mir deine e-mail adresse geben und ich schick dir dann ein spiel das ich vor langem mal geschrieben hab. da kann man eine tür öffnen und munition aufnehmen indem man auf das objekt in einer bestimmten entfernung schaut und e drückt. vllt kannst du da noch mehr brauchen. mit tag und nacht und so. wenn du das nicht checkst oder was anders meinst, dann such ich, wie man das genau machen muss. |
||
![]() |
PhillipB |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also es sollte shcon mit der maus so zum ziehen sein ! Und nicht wenn die ausgerichtet ist und ne taste gedrückt wird ![]() |
||
bjh |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
bitte
naja da hab ich keine ahnung ![]() dann hoff ich, dass jemand anderer helfen kann |
||
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also wie meinst du das, wenn man klickt dann soll das Fenster entweder auf oder zu gehen oder man soll es mit der Maus aufschieben können (Also Mausdrauf -> Drücken und gedrückt halten, fenster wird an Mausposition gesetzt )
Die erste Möglichkeit ist sehr einfach umszusetzten, einfach eine Statusvariable immer ändern wenn geklickt wird, also : Klick -> Status=1 -> Klick -> Status=0 -> Klick -> Status=1 usw. Und dann nach Status (z.B. 0 = Zu, 1 = Offen) dann das Fenster Positionieren. Für die Zweite Möglichkeit brächtest du einen Unsichtbaren Block, den du auf die Maus-Berührung testes, und dann die PickedY Speicherst, wenn Maustaste gedrückt worden ist und dann nur noch das Fenster anhand des neuen PickedY wertes ändern. mfg ToeB |
||
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt! |
![]() |
PhillipB |
![]() Antworten mit Zitat ![]() |
---|---|---|
Die 2 Möglichkeit meine ich könntest du mir diese erklären?(mit code?) | ||
Lapiz |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Das sollte ungefähr sein, was du suchst:
Code: [AUSKLAPPEN] Graphics3D 640,480,16,2
SetBuffer BackBuffer() cam=CreateCamera() PositionEntity cam,0,5,-5 TurnEntity cam,45,0,0 plane=CreatePlane() PositionEntity plane,0,-1,0 fenster=CreateCube() ScaleEntity fenster,1,1,.2 EntityColor fenster,40,140,255 EntityAlpha fenster,.75 EntityPickMode fenster,2 While Not KeyHit(1) pick=CameraPick(cam,MouseX(),MouseY()) If pick<>0 If PickedEntity()=fenster If MouseDown(1) PositionEntity fenster,PickedX(),EntityY(fenster),EntityZ(fenster) EndIf EndIf EndIf UpdateWorld RenderWorld Flip Wend End |
||
![]() |
PhillipB |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ok danke erstmal doch jetzt habe ich noch ein problem das Fenster ist nämlich schräg!
Deswegen habe ich eine halterung wo es drinn liegt und halt das Fenster. Durch die Kollisionen müsste es ja klappen das das fenster in der Halterung bleibt doch jetzt bewegt sich garnichts mehr. Hier der Code: Code: [AUSKLAPPEN] Graphics3D 640,480,16,2
SetBuffer BackBuffer() cam=CreateCamera() PositionEntity cam,0,5,-5 TurnEntity cam,45,0,0 plane=CreatePlane() PositionEntity plane,0,-1,0 fenster=LoadMesh ("Straba\NF6\fenster.3ds") PositionEntity fenster, 0,12,0 Halterung=LoadMesh ("Straba\NF6\halterung.3ds") EntityType halterung, 2 EntityType fenster, 1 ;Kollis Collisions 1, 2, 2, 3 While Not KeyHit(1) MoveEntity fenster, 0,-10,0 pick=CameraPick(cam,MouseX(),MouseY()) If pick<>0 And PickedEntity()=fenster And MouseDown(1) Then PositionEntity fenster,PickedX(),EntityY(fenster),PickedZ() EndIf UpdateWorld RenderWorld Flip Wend End |
||
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ist noch verbesserungswürdig aber es ist auch eben ganz schnell hingeschrieben :
Code: [AUSKLAPPEN] Graphics3D 800, 600, 16, 2
SetBuffer BackBuffer( ) Const minY = 0, maxY = 2 Local timer = CreateTimer( 60 ) Local camera = CreateCamera( ) Local Fenster = CreateCube( ) PositionEntity Fenster, 0, (minY+maxY)/2.0, 5 ScaleMesh Fenster, 1, 0.5, 0.1 Local FensterCol = CopyEntity( Fenster ) EntityAlpha FensterCol, 0.1 ScaleEntity FensterCol, 1, 20, 0.1 EntityPickMode FensterCol, 2 Local pick, drop, dropY# Repeat pick = CameraPick( camera, MouseX(), MouseY() ) If drop = 0 Then If MouseHit( 1 ) Then If pick = FensterCol Then drop = 1 dropY = PickedY( ) - EntityY( Fenster ) EndIf EndIf Else nY# = PickedY( )-dropY If nY < minY Then nY = minY If nY > maxY Then nY = maxY PositionEntity Fenster, EntityX( Fenster ), nY, EntityZ( Fenster ) If MouseDown( 1 ) = 0 Then Drop = 0 EndIf RenderWorld( ) Flip 0 WaitTimer( timer ) Cls Until KeyHit( 1 ) End mfg ToeB |
||
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt! |
![]() |
PhillipB |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja aber so ein Fenster meine ich nicht das steht schräg nicht 90° sonder irgent ein zwischen ding .
Deswegen wollte ich es ja mit Kollisionen lösen So: ![]() |
||
![]() |
PhillipB |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo sry für DP.
Aber ich habe etwas herum experimentiert unzwar habe ich mal das mesh mit rotatemesh gedreht . Code: [AUSKLAPPEN] Graphics3D 640,480,16,2
SetBuffer BackBuffer() cam=CreateCamera() PositionEntity cam,0,5,-5 TurnEntity cam,45,0,0 plane=CreatePlane() PositionEntity plane,0,-1,0 fenster=CreateCube() ScaleEntity fenster,1,1,.2 EntityColor fenster,40,140,255 EntityAlpha fenster,.75 EntityPickMode fenster,2 RotateMesh fenster,0,24,0 While Not KeyHit(1) pick=CameraPick(cam,MouseX(),MouseY()) If pick<>0 And PickedEntity()=fenster And MouseDown(1) Then PositionEntity fenster,PickedX(),EntityY(fenster),EntityZ(fenster) EndIf UpdateWorld RenderWorld Flip Wend End Doch jetzt ist es ja sehr verzerrt was gann man dagegen machen? |
||
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
Dreh einfach das Fenster im Modeller in die richtige Position und exportiere es erneut (Und lass RotateMesh weg)
mfg ToeB |
||
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt! |
![]() |
PhillipB |
![]() Antworten mit Zitat ![]() |
---|---|---|
ok velen dank an euch ![]() Edit: Ich wollte eine sperre einbauen doch irgentwie habe ich etwas falsch gemacht doch ich finde meinen Fehler nicht : Code: [AUSKLAPPEN] Graphics3D 640,480,16,2
SetBuffer BackBuffer() cam=CreateCamera() PositionEntity cam,0,5,-5 TurnEntity cam,45,0,0 plane=CreatePlane() PositionEntity plane,0,-1,0 fenster= LoadMesh ("fenster.3ds") EntityPickMode fenster,2 fensterX# = EntityX(fenster) While Not KeyHit(1) fensterX# = EntityX(fenster) DebugLog fensterX pick=CameraPick(cam,MouseX(),MouseY()) If pick<>0 And PickedEntity()=fenster And MouseDown(1) Then PositionEntity fenster,PickedX(),EntityY(fenster),EntityZ(fenster) EndIf If fensterX > 1.74954 Then fensterX = 1.74954 Else If fensterX < -1.11413 Then fensterX = -1.11413 EndIf UpdateWorld RenderWorld Flip Wend End Wäre nett wenn mir noch einer helfen würde! |
||
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
Villeicht beschreibst du mal wie der Fehler aussieht ? Ohne dein Modell kann man da nicht viel Testen.
Außerdem hab ich dir ein sehr schönes Beispiel geschrieben (siehe oben) bei dem eine Funktionierende Sperre drin ist, und es wäre auch ganz einfach das Fenster statt nach oben nach Links oder Rechts schieben zu lassen, hier der Code : Code: [AUSKLAPPEN] Graphics3D 800, 600, 16, 2
SetBuffer BackBuffer( ) Const minX = 0, maxX = 2 Local timer = CreateTimer( 60 ) Local camera = CreateCamera( ) Local Fenster = CreateCube( ) PositionEntity Fenster, (minX+maxX)/2.0, 0, 5 ScaleMesh Fenster, 0.5, 1, 0.1 EntityPickMode Fenster, 2 Local FensterCol = CopyEntity( Fenster ) EntityAlpha FensterCol, 0.1 ScaleEntity FensterCol, 20, 1, 0.1 EntityPickMode FensterCol, 2 Local pick, drop, dropX#, nX# Repeat pick = CameraPick( camera, MouseX(), MouseY() ) If drop = 0 Then If MouseHit( 1 ) Then If pick = Fenster Then drop = 1 dropX = PickedX( ) - EntityX( Fenster ) EntityPickMode Fenster, 0 EndIf EndIf Else nX# = PickedX( )-dropX If nX < minX Then nX = minX If nX > maxX Then nX = maxX PositionEntity Fenster, nX, EntityY( Fenster ), EntityZ( Fenster ) If MouseDown( 1 ) = 0 Then Drop = 0 : EntityPickMode Fenster, 2 EndIf RenderWorld( ) Flip 0 WaitTimer( timer ) Cls Until KeyHit( 1 ) End ![]() mfg ToeB |
||
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt! |
![]() |
PhillipB |
![]() Antworten mit Zitat ![]() |
---|---|---|
Okay vielen dank jetzt verstehe ich es ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group