Objekt bewegt sich weg, aber es soll sich nur Rotieren
Übersicht

KevinBetreff: Objekt bewegt sich weg, aber es soll sich nur Rotieren |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo BlitzBasic Community!
Ich habe eine Frage bzw. ein Problem Ich habe einen bzw. zwei Wischerarme Programmiert. Die Wischer rotieren auch, aber bewegen sich von der normalen Position weg! Code: [AUSKLAPPEN] Graphics3D 1920,800,32,2
SetBuffer BackBuffer() cam1=CreateCamera() PositionEntity cam1,2,2,0 Wischerarme = LoadAnimMesh ("Wischerarme.3ds") plane = CreatePlane () Wischerarm_l = FindChild (Wischerarme,"wischerarm") Wischerarm_r = FindChild (Wischerarme,"wischera00") Global wischer_position# = 0 While Not KeyHit (1) DebugLog wischer_Position RenderWorld ;Linker Wischerarm If KeyDown (17) Then wischer_position = wischer_position + 0.01 EndIf If wischer_position > 0.08 Then wischer_position = 0 EndIf RotateEntity wischerarm_l, 0,wischer_position,0 UpdateWorld Flip 0 Wend End Vielen Dank im Vorraus... |
||
feiderehemals "Decelion" |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Überprüfe mal in deinem Graphikbearbeitungsprogramm, ob der Mittelpunkt vom Wischerarm an der richtigen stelle ist. Sonst kann es gut sein, dass sich der Arm zwar dreht, aber um einen Mittelpunkt der sonstwo liegt.
mfg Dece |
||
Kevin |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Das Objekt liegt auf der Nulllinie. | ||
![]() |
TimBo |
![]() Antworten mit Zitat ![]() |
---|---|---|
möchtest du die Objekte mal hochladen ? | ||
mfg Tim Borowski // CPU: Ryzen 2700x GPU: Nvidia RTX 2070 OC (Gigabyte) Ram: 16GB DDR4 @ 3000MHz OS: Windows 10
Stolzer Gewinner des BCC 25 & BCC 31 hat einen ersten Preis in der 1. Runde beim BWInf 2010/2011 & 2011/12 mit BlitzBasic erreicht. |
![]() |
Dottakopf |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi !
mir fallen einige dinge in deinem Code auf. 1. Du verwendest Flip 0 hast aber keinen Timer. Dies kann unter umständen einen Computer lahm legen, da es nicht gesund ist den Rechner mit 1000 Schleifendruchgängen pro ms arbeiten zu lassen. Bitte erstelle einen Timer und frage ihn in der Loop ab. Dabei möchte ich auf diesen Post "Hurra 100% Auslastung" verweisen: https://www.blitzforum.de/foru...hp?t=25242 2. Es ist wohl sinnvoll erst deine 3D welt zu aktualisieren und sie erst dann Rendern, bzw. berechnen zu lassen. Also schreib doch bitte Updateworld() vor Renderworld() so : Code: [AUSKLAPPEN] Graphics3D...,... setbuffer backbuffer() timer = createtimer( 60 ) ;60 FPS gebremst repeat cls waittimer(timer) ;damit dein Prozessor nicht durchglüht Updateworld() Renderworld() flip 0 until Keyhit(1) 3. Ich kann mir irgendwie nicht vorstellen das nur durch den befehel Rotateentity dein "wischer" davonrollt. Um ganz sicher zu sein, das es nicht an deinem Model liegt, ersetze das Model zum Debuggen durch einen normalen cube und schau ob der fehler weiterhin auftritt. Alternativ ersetze den befehl Rotateentity durch den besser geeigneten Befehl "Turnentity" Was der wesentliche und vorallem super praktische unterschied zwischen Rotateentity und Turnentity ist kannst mit etwas eigenarbeit aus der Hilfe hier im Forum erkennen. (Das eine macht eine "Relative Bewegung" und das andere eine "Aboslute Bewegung" ) Gruß Dottakopf |
||
Rechtschreibfehler gelten der allgemeinen Belustigung! |
Kevin |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
läuft, aber muss noch ein bisschen anpassen....
Code: [AUSKLAPPEN] Graphics3D 1920,800,32,2
SetBuffer BackBuffer() cam1=CreateCamera() PositionEntity cam1,2,2,0 Wischerarme = LoadAnimMesh ("Wischerarme.3ds") tst = CreateCube () plane = CreatePlane () Wischerarm_l = FindChild (Wischerarme,"wischerarm") Wischerarm_r = FindChild (Wischerarme,"wischera00") Global wischer_position# = 0 While Not KeyHit (1) DebugLog wischer_position ;Linker Wischerarm If KeyDown (17) Then wischer_position = wischer_position + 0.01 EndIf If wischer_position > 0.03 Then wischer_position = 0 EndIf TurnEntity wischerarm_l, 0,0,wischer_position UpdateWorld RenderWorld Flip 0 Wend End |
||
![]() |
Dottakopf |
![]() Antworten mit Zitat ![]() |
---|---|---|
Mir ist wichtiger das du den unterschied zwischen Rotateentity und Turnentity verstanden hast.
Benutze Rotateentity um einmalig ein Objekt nach einen Gewissen winkel hin auszurichten. Zum Beispiel beim laden von Objekten.... Benutze Turnentity um im Spiel ein objekt um einen Gewissen wert zu drehen... Hierbei wird der aktuelle winkelwert genommen und um deinen wert erhöht. Spielerdrehung und sowas... Gruß Dottakopf |
||
Rechtschreibfehler gelten der allgemeinen Belustigung! |
Kevin |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Der Wischer geht einfach nicht auf den Ursprung zurück...
Code: [AUSKLAPPEN] Graphics3D 1920,800,32,2
SetBuffer BackBuffer() cam1=CreateCamera() PositionEntity cam1,2,2,0 Wischerarme = LoadAnimMesh ("Wischerarme.3ds") timer = CreateTimer( 60 ) plane = CreatePlane () Wischerarm_l = FindChild (Wischerarme,"wischerarm") Wischerarm_r = FindChild (Wischerarme,"wischera00") Global Wischer# = 0 Global wischer_position# = 0 While Not KeyHit (1) DebugLog wischer_position RenderWorld ;Linker Wischerarm If KeyDown (17) Then Wischer = 1 EndIf If Wischer = 1 Then wischer_position = wischer_position + 0.02 EndIf If wischer_position > 0.24 Then Wischer = 0.5 EndIf If wischer = 0.5 Then wischer_position = wischer_position - 0.02 EndIf If wischer_position < 0 Then Wischer = 0 EndIf TurnEntity wischerarm_l, 0,0,wischer_position UpdateWorld Flip 0 Wend End |
||
![]() |
Dottakopf |
![]() Antworten mit Zitat ![]() |
---|---|---|
so ...
hier ein total simples beispiel für einen Scheiben wischer... Code: [AUSKLAPPEN] Graphics3D 800,600,16,2 SetBuffer BackBuffer() timer=CreateTimer(60) cam = CreateCamera() MoveEntity cam,0,0,-20 wischer = CreateCube() EntityColor wischer,255,0,0 ScaleEntity wischer,1,3,1 Repeat Cls WaitTimer(timer) ;je nach richtung ist der Dreh speed positiv oder negativ If Richtung = 0 Then Wspeed# = 1 Else Wspeed# = -1 End If ;winkel des wischers bestimmen If richtung = 0 And EntityRoll(wischer) > 100 Then richtung = 1 If richtung = 1 And EntityRoll(wischer) < -100 Then richtung = 0 ;wischer dreht sich TurnEntity wischer,0,0,Wspeed UpdateWorld() RenderWorld() Text 0,0, "Roll " +EntityRoll(wischer) Flip 0 Until KeyHit(1) kopier es in dein bb, spiele damit rum. Ich denke das sollte reichen ~Edit~ da der mittelpunkt des Objektes in der Mitte liegt, wird es auch von da aus gedreht... wie man den Bezugspunkt in einem 3D Objekt ändert musst selber gucken. Wenn du das Objekt in einem Modeller erstellst kannst du den bezugspunt mit hilfe der 0 Linie selber bestimmen Gruß Dottakopf |
||
Rechtschreibfehler gelten der allgemeinen Belustigung! |
Kevin |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Jetzt muss nurnoch das Wischerblatt an die Arme angepasst werden, wie bekomme ich das am Besten hin?
Code: [AUSKLAPPEN] Graphics3D 1920,800,32,2
SetBuffer BackBuffer() cam1=CreateCamera() PositionEntity cam1,2,2,0 timer = CreateTimer( 60 ) plane = CreatePlane () Wischerarm_l = LoadMesh ("wischerarm_l.3ds") Wischer_blatt = LoadMesh ("wischerblatt.3ds") Wischerarm_r = LoadMesh ("wischerarm_r.3ds") PositionEntity wischerarm_r, 0.2,0,0 ;Global wischer_position# = 0 While Not KeyHit (1) RenderWorld ;Linker Wischerarm ;je nach richtung ist der Drehspeed positiv oder negativ If Richtung = 0 Then Wspeed# = 0.02 Else Wspeed# = -0.02 End If ;winkel des wischers bestimmen If richtung = 0 And EntityRoll(wischerarm_l) > 20 Then richtung = 1 If richtung = 1 And EntityRoll(wischerarm_l) < -80 Then richtung = 0 ;wischer dreht sich TurnEntity wischerarm_l,0,0,Wspeed TurnEntity wischerarm_r,0,0,Wspeed MoveEntity wischer_blatt,-Wspeed/27,0,0 UpdateWorld Flip 0 Wend End |
||
![]() |
Eingeproggt |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das Wischerblatt müsste sich an die Krümmung der Scheibe anpassen.
Außerdem müsste es diese typischen Quietschgeräusche von sich geben, natürlich abhängig vom Alter des Wischerblattes (Gummi-Zustand). Vergiss weiterhin nicht, dass zB eingetrockneter Dreck nicht so einfach weggeht und man sowohl eine Scheiben-Flüssigkeits-Anlage braucht als auch verschiedene Wischer-Stufen. Dasselbe für die Heckscheibenwischer und wenn wir schon dabei sind auch für die Scheinwerfer. ------ Mal im Ernst... Weißt du überhaupt noch, worum es in deinem Spiel an sich geht? War das nicht die Bussimulation? Konzentrier dich doch auf wichtigere Inhalte bevor du mit den Wischerarmen rumspielst. mfG, Christoph. |
||
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9 |
![]() |
Dottakopf |
![]() Antworten mit Zitat ![]() |
---|---|---|
Kevin... hör mal her... So wie du die Wischer umsetzt, das ist totaler humbuck....
erstens hat Eingeproggt völlig recht... Soviel Zeitaufwand für banale Scheibenwischer zu dem aktuellen Projekt stand ist nicht vertretbar ![]() Vorallem jetzt wo du mit so sachen wie "Jetzt muss ich nur noch den Wischergummie an den wischer arm anpassen" daher bringst, zeigt mir leider das zu keine 5 milimeter weit gedacht hast..... Wie komme ich darauf ? ... Nunja.. warum erstellst du nicht im Modeller 2 Komplett fertige Scheibenwischer? Wenn du sie eh schon im Modeller erstellt hast, warum erstellst du dort nicht gleich noch eine Scheibenwischer animation ? Wenn das so passiert ist, dann brauchst du nur noch 1mal n Schweibenwischermodell laden. Diese an deine Auto dranheften und nach bedarf die animation abspielen... Darauf wäre man aber gleich gekommen, wenn man sich von anfang an gedanken gemacht hätte. Und im allgemeinen.... es gibt befehle wie Code: [AUSKLAPPEN] Entityparent die es einem ermöglichen Objekte zusammen zuhängen. Nun ist ein Objekt das Parent und alle anderen seine Childs... wird das Parent verschoben, verschieben sich die Child objekte von ganz alleine mit, ohne das man das coden muss... |
||
Rechtschreibfehler gelten der allgemeinen Belustigung! |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group