3D-Fisch

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

Nicdel

Betreff: 3D-Fisch

BeitragDo, Jun 26, 2008 16:50
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragDo, Jun 26, 2008 16:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Hast du dich schonmal mit CreateTimer und WaitTimer auseinander gesetzt?
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

BeitragDo, Jun 26, 2008 17:14
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragDo, Jun 26, 2008 17:18
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragDo, Jun 26, 2008 18:08
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragDo, Jun 26, 2008 20:24
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragDo, Jun 26, 2008 20:49
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragDo, Jun 26, 2008 21:22
Antworten mit Zitat
Benutzer-Profile anzeigen
( Ich würde auch das Waittimer(timer) nicht in die Funktion, sondern in die Hauptschleife einfügen )

DAK

BeitragDo, Jun 26, 2008 21:23
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragFr, Jun 27, 2008 12:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Der dreht sich ja (soweit ich das nachvollziehen kann) immer nur in eine Richtung Question
Idea

Da würde ich eher

Code: [AUSKLAPPEN]

Turnentity fisch, 0, Rnd( -1, 1 ), 0


einsetzen, oder Question

Xeres

Moderator

BeitragFr, Jun 27, 2008 14:09
Antworten mit Zitat
Benutzer-Profile anzeigen
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
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Nicdel

BeitragFr, Jun 27, 2008 16:42
Antworten mit Zitat
Benutzer-Profile anzeigen
und wie genau soll ich das machen?

Nicdel

BeitragFr, Jun 27, 2008 16:43
Antworten mit Zitat
Benutzer-Profile anzeigen
und wie genau soll ich das machen?

Xeres

Moderator

BeitragFr, Jun 27, 2008 16:51
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragFr, Jun 27, 2008 16:56
Antworten mit Zitat
Benutzer-Profile anzeigen
guter anfang! vielen Dank!

Thorsten

BeitragFr, Jun 27, 2008 16:56
Antworten mit Zitat
Benutzer-Profile anzeigen
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 Wink

mfG,

Thorsten

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group