Random Funktion und anderes...

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

crazy_down

Betreff: Random Funktion und anderes...

BeitragMo, Okt 23, 2006 1:12
Antworten mit Zitat
Benutzer-Profile anzeigen
HI ihr, also ich bin erst neu bei Blitz3D und versuche mich so ein bisschen an den Grundlagen und habe jetzt ein paar Fragen dazu.

Als erstes. Die Random Funktion.
z.b. Rnd(1,100) sollte eigentlich einen Random wert zwischen 1 und 100 bringen oder habe ich das falsch verstanden ?

Naja bei mir kommt "immer" der Wert 36.2103 raus. Mit Random(1,100) kommt einfach 36 raus. Ich habe Blitz3D neugestartet, ich habe mein Rechner neugestartet aber es kommt immer der selbe Wert. Oder mache ich das falsch? Muss ich die Random Funktion anders aufrufen damit sie Zufällige Werte ausgibt ?

2. Ich möchte ein Objekt z.b. eine Sphere mit zufälligen Variablen haben.
Also

Code: [AUSKLAPPEN]

sphere=CreateSphere(32)
a$=Rnd(1,100)
b$=Rnd(1,100)
Print a
PositionEntity sphere,a,b,5


so sollte die Sphere zufällig irgendwo stehen, oder ?
Nun möchte ich aber mehrere Spheren haben d.h. eine Sphere steht bei a,b,5 und die nächste bei a+Rnd,b+Rnd,5 usw. das ich halt verteilt mehrere davon habe...
(Hoffe ihr wisst was ich meine *g*)

Wie kann ich das erreichen das nicht immer die gleiche sphere gemoved wird ohne zich neue zu erstellen ?

so und 3.
Ich lade eine Mesh z.b.
Code: [AUSKLAPPEN]
Global drum=LoadMesh("ani.3DS")

Dies wurde mit 3D Studio Max erstellt. Nun will ich das ding Animiert anzeigen lassen. Also Code: [AUSKLAPPEN]
Global drum=LoadAnimMesh("ani.3DS")

Kann ich nur Animierte Objekte aus Cinema4D anzeigen lassen ? Denn wenn ich es so lade, wird es einfach nicht angezeigt oder ist das mit dem Format Problematisch ?

So das wars für den Anfang Wink

Danke schonmal
grüße crazy_down

PSY

Betreff: Re: Random Funktion und anderes...

BeitragMo, Okt 23, 2006 1:35
Antworten mit Zitat
Benutzer-Profile anzeigen
crazy_down hat Folgendes geschrieben:

Als erstes. Die Random Funktion.
z.b. Rnd(1,100) sollte eigentlich einen Random wert zwischen 1 und 100 bringen oder habe ich das falsch verstanden ?


random bringt immer die gleichen werte, wenn man es nicht vorher mit seedrnd initialisiert.

SEEDRND MILLISECS() eignet sich bestens dazu, da millisecs immer nen anderen wert hat

das ganze brauchst du nur 1x aufzurufen...

l8er,
psy

BladeRunner

Moderator

BeitragMo, Okt 23, 2006 6:17
Antworten mit Zitat
Benutzer-Profile anzeigen
seedrnd millisecs() wurde Dir ja schon genannt (Du hättest aber über die Beispiele in der OH auch drauf kommen können, da es da massig Querverweise gibt und noch dazu die Rubrik unter 2D Zufall heisst...)

Dann hast Du eindeutig noch Probleme mit dem Verständnis der Variablentypen:
Du weisst deine Kommazahlen einem String zu (a$ = rnd(1,100)). Strings sind zur Speicherung von Zeichenketten gedacht. Was Du brauchst ist ein float(#).
Zudem kann ich Dir nur jetzt schon raten deinen Variablen ausführliche und sinnvolle Namen zu geben. 'a' sagt nichts über die Bedeuting aus. In einem Code der wenige Zeilen lang ist mag das noch gehen, aber wenn Du erstmal ein paar Seiten Code hast ist das der Overkill.

Wenn Du mehrere Spheres an unterschiedlichen Stellen erstellen willst empfiehlt sich eine Schleife:
Code: [AUSKLAPPEN]
dim sphere(20)
for count = 1 to 20
    sphere(count) = createsphere(32)
    positionentity sphere(count),rnd(100),rnd(100),5
next


Zum Animationsproblem, da kann ich erstmal nur raten. Ist der dateiname richtig ? Liefert der Ladebefehl ein Handle zurück ?
Übrigens immer wieder interessant dass sich Hinz und Kunz 3DSM leisten kann.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

crazy_down

BeitragMo, Okt 23, 2006 16:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi danke für die Antworten... das hilft mir erstmal sehr weiter...
Ja wahrscheinlich hatte ich da ein Verständniss Problem, ich schau mir das ganze nochmal genau an Wink


so naja wenn ich den Mesh mit LoadMesh lade funktioniert es und meine Figur steht da. nur mit AnimMesh ist wird sie nicht Angezeigt. Zuem glaube ich wenn der Pfad nicht richtig wäre zeigt Blitz3D das doch an !?!

Trotzdem danke erstmal.

grüße
crazy_down

Christoph

BeitragMo, Okt 23, 2006 17:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Die Thread mit dem Titel "Hilfe, rand() funktioniert nicht" gibt es viel zu häufig.

Ich wäre dafür, dass es in die BlitzFAQ übernommen wird.
 

crazy_down

BeitragMo, Okt 23, 2006 17:31
Antworten mit Zitat
Benutzer-Profile anzeigen
^^ das wollte ich natürlich nicht erreichen, wobei ich natürlich mit richtigem Lesen den fehler hätte selbst finden können. Aber wenn es sich schon Anbietet.. Dafür Wink

Christoph

BeitragMo, Okt 23, 2006 17:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Das ist ja nichts gegen dich, im Gegenteil, es soll ja allen Neulingen helfen, die Probleme mit Rand() haben.

Vorausgesetzt sie sie schauen überhaupt in die FAQ Wink
 

crazy_down

BeitragDi, Okt 24, 2006 2:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke für eure Hilfe es hat jetzt alels geklappt.
Bei der Animation habe ich auch alles hinbekommen, weiß nicht wo der fehler lag. Habe einfach Mein Objekt nochmal neu exportiert, dann ging es.

Ich habe nun eine weiter Fagre.

Ich habe mit Random nun mehrere spheren erstellt wie geschrieben.
Kann ich nun evtl. die genaue Position einer dieser Zufällig erstellten Spheren ermitteln ?
also mit z.b.

Code: [AUSKLAPPEN]

x = EntityX()
y = EntityY()
z = EntityZ()


ich möchte später bei einer Collision genau diese Sphere verschwinden lassen.

danke und grüße
crazy_down

Christoph

BeitragDi, Okt 24, 2006 13:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Du gibst dir irgendwie selbst deine Antwort...
Oder versteh ich dich nicht richtig?

Zitat:
Kann ich nun evtl. die genaue Position einer dieser Zufällig erstellten Spheren ermitteln ?


Zitat:
x = EntityX()
y = EntityY()
z = EntityZ()

Das ist die genaue Position, du musst halt noch den Namen in die Klammern eintragen, und, damit die Position als Kommazahl und nicht als Integer gespeichert wird, ein # nach jedem Variablennamen schreiben.

Zitat:
ich möchte später bei einer Collision genau diese Sphere verschwinden lassen.

Dafür gibt es massenweise Kollisionsbefehle, die du dir in der Onlinehilfe anschauen kannst.

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group