3D-Fisch
Übersicht

![]() |
NicdelBetreff: 3D-Fisch |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo,
ich mache gerade ein Unterwasser-Spiel und brauche Hilfe bei der Bewegung eines 3D-Fisches, der einfach nur in der Gegend herum "schwimmen" soll. Bei meiner Lösung (eine Funktion, die jede Runde aufgerufen wird) bewegt sich der Fisch so schnell hin und her, dass man ihm gar nicht folgen kann. MfG Nicdel |
||
![]() |
Eingeproggt |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hast du dich schonmal mit CreateTimer![]() ![]() Hilft dir nicht nur, das Spiel zu regulieren sondern schont auch kräftig deine (und später mal unsere) Hardware. mfG, Christoph. |
||
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9 |
![]() |
Nicdel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das macht den Fisch auch nicht langsamer. Das Problem ist ja, dass er sich zu schnell bewegt und mit WaitTimer stoppt ja das ganze Programm. | ||
![]() |
Eingeproggt |
![]() Antworten mit Zitat ![]() |
---|---|---|
Glaub mir, das bringt etwas.
Wie man Wiattimer richtig anwendet ist hier sehr gut beschrieben: https://www.blitzforum.de/foru...hp?t=25242 mfG, Christoph. |
||
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9 |
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
Schreib mal mehr darüber was in deinem Code steht... vil. Setzt du MoveEntity auf einen zu hohgen wert, oder du Animierst den Fisch zu schnell... Ich hab nämlich deine Frage nicht so ganz verstanden...
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! |
![]() |
Nicdel |
![]() Antworten mit Zitat ![]() |
---|---|---|
OK...
Code: [AUSKLAPPEN] Global timer = CreateTimer(60) ; Timer Global fish = LoadMesh("fish.3ds") ; Der Fisch ScaleEntity(fish, 5, 5, 5) ; passende Größe MoveEntity fish, 0, -100, 0 ; Anfangsposition (...) Function MoveFish3D() ; Wird in jeder Runde aufgerufen WaitTimer(timer) RotateEntity fish,0,EntityYaw(fish)+Rnd(0, 50),0 MoveEntity fish, Rnd(0, 50), 0, 0 End Function |
||
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
Jap, es liegt an MoveEntity... Du musst bedenken, dass MoveEntity das entity jeden schleifen durchgang (Bei Parameter 1) die Position den Entity um 1 erhöht... Wenn du jetzt Rand(0,50) schreibst, dann bewegt der sich mit 25Schritte/Schleifendruchgang . eißt er ist viel zu schnell... ersetzt das hier : Code: [AUSKLAPPEN] MoveEntity fisch,0,0,Rnd(0.000,0.100)
Bitte guck das nächstemal in der Hilf nach... 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! |
BadDeath |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
( Ich würde auch das Waittimer(timer) nicht in die Funktion, sondern in die Hauptschleife einfügen ) | ||
![]() |
DAK |
![]() Antworten mit Zitat ![]() |
---|---|---|
außerdem ersetz das
RotateEntity fish,0,EntityYaw(fish)+Rnd(0, 50),0 mit TurnEntity fish, 0, Rnd(0, 50), 0 wobei ich das Rnd(0, 50) auch noch anpassen würd (so Rnd(0, 1) oder so) |
||
Gewinner der 6. und der 68. BlitzCodeCompo |
DarkDragon-1993 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Der dreht sich ja (soweit ich das nachvollziehen kann) immer nur in eine Richtung ![]() ![]() Da würde ich eher Code: [AUSKLAPPEN] Turnentity fisch, 0, Rnd( -1, 1 ), 0 einsetzen, oder ![]() |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wenn in jedem Schleifendurchlauf kleine Zufallswerte erzeugt werden, kann das Ergebniss nur in spastischen Zuckungen enden... Mit einem Timer der nur alle 1-5 Sekunden die Werte ändert, sollte das ganze besser laufen. | ||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
Nicdel |
![]() Antworten mit Zitat ![]() |
---|---|---|
und wie genau soll ich das machen? | ||
![]() |
Nicdel |
![]() Antworten mit Zitat ![]() |
---|---|---|
und wie genau soll ich das machen? | ||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Beispielsweise so:
Code: [AUSKLAPPEN] If Fisch_timer = 0 Then Fisch_timer = MilliSecs()
If Fisch_timer <> 0 And Fisch_timer + 1000 < MilliSecs() Then Fisch_timer = 0 : MoveFish3D() Wenn der Fisch_timer=0 ist, wird die Aktuelle Zeit gespeichert. Wenn der Fisch_timer ungleich 0 ist und gleichzeitig mindestens eine Sekunde vergangen ist wird der Timer wieder genullt und der sonstige Code ausgeführt. Edit: Recht hat er! Zu einem Block zusammengeführt ist's außerdem noch ein Tick hübscher: Code: [AUSKLAPPEN] If Fisch_timer = 0 Then
Fisch_timer = MilliSecs() ElseIf Fisch_timer + 1000 < MilliSecs() Then Fisch_timer = 0 MoveFish3D() EndIf |
||
- Zuletzt bearbeitet von Xeres am Fr, Jun 27, 2008 17:26, insgesamt 2-mal bearbeitet
![]() |
Nicdel |
![]() Antworten mit Zitat ![]() |
---|---|---|
guter anfang! vielen Dank! | ||
![]() |
Thorsten |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] If Fisch_timer = 0 Then Fisch_timer = MilliSecs()
If Fisch_timer <> 0 And... Das Code: [AUSKLAPPEN] Fisch_timer <> 0 And kann man da wohl weg lassen ![]() mfG, Thorsten |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group