3D-2D-3D Koords, Pausieren, Partikel und mehr

Übersicht BlitzBasic Beginners-Corner

Gehe zu Seite 1, 2  Weiter

Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten.

 

Willi3D

Betreff: 3D-2D-3D Koords, Pausieren, Partikel und mehr

BeitragMi, Feb 07, 2007 6:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

ich hab schon über 8 Stunden das Forum aufmerksam durchgelesen, und hab viele Interessante Sachen gefunden die ich jetzt schon selbst "zum laufen" gebracht hab'.
Aber gibt noch immer ein paar Dinge bei denen ich Hilfe, vllt auch Beispiele brauchen könnte.

1.) "3D-2D-3D Koords"
Das gab es ja schon mehrmals hier im Forum, aber entweder versteh' ichs nicht, ich mach irgendwas falsch, oder es ist doch nicht das selbe.
Also ich habe eine Map, 3D. Dann habe ich ein Objekt was man frei im Raum bewegen kann (x, y,z). Und dann ist da natürlich noch das 2D Teil.. der Mauszeiger.
Ich möchte es jetzt so hinbekommen, das wenn ich die linke Maustaste drücke Objekte (Schüsse) erstellt werden, und vom Objelt auf die Map fliegen, je nachdem wo sich der Mauszeiger befindet. Aber egal was ich anstell' die fliegen immer nur gerade aus Sad

2.) "Pausieren"
Wie kann ich das Spiel komplett pausieren, ein Menü einblenden und bei einem Klick auf "Weiter" (o.ä.) wieder vortsetzen?
Habe in der Hauptschleife schon probiert mit einer Abfrage zuerst zu prüfen ob "spielpause" 1 oder 0 ist, und bei 1 soll nichts passieren. Aber das einzige was passiert der Platzhaltertext wird angezeigt, das Spiel wird grafisch angehalten, aber bei einem Klick auf weiter sieht man gleich dass das Spiel weitergelaufen ist - man hat es halt nur nicht gesehen.

3.) "Partikel"
Tja, im Grunde sollten die doch klappen, tun sie aber nicht. Ich plaziere am Objekt Partikel, diese sollen immer hinten am Objekt sein. Sind sie aber nicht.
Wenn ich mich zu schnell fortbewege kommen die einfach nicht nach, und sind nicht mehr zu sehen, und wenn ich mich drehe sind sie weg bis ich wieder unefähr die alte Position einnehme. Ich nehme mal an das liegt daran das die Partikel mitgedreht werden, hab aber nicht viel ahnung davon.

4.) "und mehr"
Falls das für den anfang nicht reicht wüsste ich gerne wie ich es hinbekomme das man sich nur innerhalb der Map aufhalten/bewegen kann, wie ich das Bild blau einfärbe wenn man unterwasser ist, und wie ich eine Minimap realisieren könnte.

Danke schonmal Smile

darth

BeitragMi, Feb 07, 2007 9:16
Antworten mit Zitat
Benutzer-Profile anzeigen
zu 1.:
camerapick

zu 2.:
Code: [AUSKLAPPEN]
while not keyhit(1)
 if menue=0 then
  ;spiel
 else
  ;menü
 endif
wend

oder
Code: [AUSKLAPPEN]
while not keyhit(1)
 ;spiel
 while menue=1
  ;menü
 wend
wend


NAT¨RLICH WIRD DAS PROGRAMM JETZT BEI ESC BEENDET. DIE ABBRUCH BEDINGUNG DER WHILE SCHLEIFE IST JA DAS DRÜCKEN DER ESC TASTE! will man das nicht dann macht man eine andere bedingung rein -.-
Diese Signatur ist leer.
  • Zuletzt bearbeitet von darth am Do, Feb 08, 2007 0:07, insgesamt einmal bearbeitet
 

Willi3D

BeitragMi, Feb 07, 2007 9:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

danke für deine Antwort Smile
Also Spielpause klappt nicht, das Spiel wird jetzt komplett beendet wenn man ESC drückt. Vorhin hatte ich es noch so hinbekommen das zumndest eine Meldung erscheint, das Spiel weiterläuft, und bei erneutem drücken von ESC beendet wird. Will aber noch ein schönes Menü unterbringen, und irgendwie klappt es nicht so ganz Sad

Zu CameraPick: Das war es was ich versucht habe, was aber nicht klappt.
Oder mach' ich einfach was falsch?

Code: [AUSKLAPPEN]
Function spieler_shoot()
 CameraPick(camera,MouseX(),MouseY())
 ent=PickedEntity()
 x#=PickedX()
 y#=PickedY()
 z#=PickedZ()
 s.schuss = New schuss
 s\schuss = CreateSphere(16)
 ScaleEntity s\schuss,.05,.05,.05
 ;RotateEntity s\schuss, PickedX (), PickedY (), PickedZ ()
 RotateEntity s\schuss, x#, y#, z#
 PositionEntity s\schuss, EntityX(testobj), EntityY(testobj), EntityZ(testobj)
 s\schuss_x = x#
 s\schuss_y = y#
End Function


Hab da einfach den Code verwendet den ich hier im Forum gefunden habe, und die Antwort darauf war etwas in der Art von "Hat geklappt, danke!", nur bei mir klappt das irgendwie nicht so ganz. Aber von der Funktion selbst hab' ich sowieso noch keine Ahnung, also denk ich mal ich mach' nur irgendwas total falsch.

AMD Athlon 64 X2 5200+, MSI K9N Neo SKT AM2 ATX, 4096 MB RAM (Samsung, 533 MHZ DDR2), Radeon X1950XTX GDDR4 (512 MB RAM), 2x250 GB Samsung SATA HDD (8ms 7200U, 3GB/s(!Smile))
 

Dreamora

BeitragMi, Feb 07, 2007 9:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Das Problem da ist das RotateEntity. Das kann so natürlich nicht funktionieren.

Da musst du schon eine Rotation rein packen, nicht eine Koordinate.

Alternativ könntest du an pickedXYZ ein "Ausrichtungspivot" hinverschieben, deinen Schuss positionieren und dann einfach mittels PointEntity deinen Schuss auf dieses Testpivot ausrichten.


Das mit dem Menu: Nun dann musst du deinem Spiel halt beibringen, das es bei Drücken von ESC im Spiel in den Menüzustand wechselt und falls vorher spiel aktiv war und jetzt menü, ESC wieder zurück ins spiel führt und wenn vorher kein spiel aktiv war fragt es halt ob man das spiel wirklich beenden will.
Das Programm kann nur was du ihm beigebracht hast, mach dir also von daher gedanken darüber was es wie machen soll und welche Zustände du dir dafür merken musst, damit es funktionieren kann. Gedanken machen ist übrigens nicht das gleiche wie Forensuche benutzen und Code anderer kopieren und sich (und später dann uns) dann fragen warum er im eigenen Fall nicht funktioniert.

~VERSCHOBEN~

falsches Forum
Dreamora
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

Willi3D

BeitragMi, Feb 07, 2007 10:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Erstmal danke für die Antwort Smile


Dreamora hat Folgendes geschrieben:
Alternativ könntest du an pickedXYZ ein "Ausrichtungspivot" hinverschieben, deinen Schuss positionieren und dann einfach mittels PointEntity deinen Schuss auf dieses Testpivot ausrichten.


Wie genau kann ich soetwas realisieren? Und wie schaut es da mit der Performance aus? Man feuert recht viele Schüsse pro Sekunde ab.



Dreamora hat Folgendes geschrieben:
Das mit dem Menu: Nun dann musst du deinem Spiel halt beibringen, das es bei Drücken von ESC im Spiel in den Menüzustand wechselt und falls vorher spiel aktiv war und jetzt menü, ESC wieder zurück ins spiel führt und wenn vorher kein spiel aktiv war fragt es halt ob man das spiel wirklich beenden will.


Also es hat ja schon halb geklappt (Spiel läuft aber weiter trotz pause, bei 2x ESC drücken wurde es aber wie gewollt beendet)
Aber jetzt klappts garnicht mehr.. Naja, das Menü ist und wird aber nicht das Problem sein.
Hauptsächlich erstmal die Schüsse und das mit den Partikeln.

AMD Athlon 64 X2 5200+, MSI K9N Neo SKT AM2 ATX, 4096 MB RAM (Samsung, 533 MHZ DDR2), Radeon X1950XTX GDDR4 (512 MB RAM), 2x250 GB Samsung SATA HDD (8ms 7200U, 3GB/s(!Smile))
 

Dreamora

BeitragMi, Feb 07, 2007 10:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Bei den Partikeln ist dein Partikelsystem vermutlich einfach kaputt wenns trotz Parenting den Emission Point nicht korrekt updatet.

Was die Schüsse betrifft: Die Performance ist nicht ganz so gut, da hast du recht. Am einfachsten nimmst du EntityYaw etc um die Rotation der Kamera zu erhalten und den Schuss auszurichten.

Ich vermute Mal den Schuss bewegst du danach einfach nur noch mit
Each s.Schuss
MovEntity s\entity, 0, 0, distanz/fps
next

oder etwas gleichwertiges. (Position und Translate Entity werden net gehen, die ignorieren die lokale ausrichtung)
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

Willi3D

BeitragMi, Feb 07, 2007 12:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Dreamora hat Folgendes geschrieben:
Am einfachsten nimmst du EntityYaw etc um die Rotation der Kamera zu erhalten und den Schuss auszurichten.


Hm.. darf ich fragen wie das geht?
Bzw wie kann/muss ich das verwenden?
Gibt es dazu vielleicht Beispiele/Tuts?

Dreamora hat Folgendes geschrieben:
Ich vermute Mal den Schuss bewegst du danach einfach nur noch mit
Each s.Schuss
MovEntity s\entity, 0, 0, distanz/fps
next


Genau. An sich ja ganz brauchbar, das Problem liegt eben nur daran den Schuss jetzt richtig auszurichten.

AMD Athlon 64 X2 5200+, MSI K9N Neo SKT AM2 ATX, 4096 MB RAM (Samsung, 533 MHZ DDR2), Radeon X1950XTX GDDR4 (512 MB RAM), 2x250 GB Samsung SATA HDD (8ms 7200U, 3GB/s(!Smile))
 

Dreamora

BeitragMi, Feb 07, 2007 12:19
Antworten mit Zitat
Benutzer-Profile anzeigen
EntityYaw und die anderen beiden Befehle geben dir die Rotation die die Kamera hat wenn du sie auf die Camera Entity anwendest. Das ist auch exakt die Ausrichtung die dein Schuss brauchst.

Wenn du suchst wirst du was dazu finden, da Schiessen (oder Shooter) das lieblingsthema der meisten Anfänger sind und darum das Board damit recht gut bestückt ist.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

skey-z

BeitragMi, Feb 07, 2007 12:34
Antworten mit Zitat
Benutzer-Profile anzeigen
hab noch nen Tipp für dich zur Pause, die Pausenvariable hattest du ja schon und damit kannst du einfach eine Funktion aufrufen, in der dann das Menü abläuft, um das Spiel währenddessen nicht weiterlaufen zu lassen, fürst du die anderen Teile nur aus, wenn die Pausenvariable 0 ist.
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz
BAC#57: 2. Platz
Twitter
 

Willi3D

BeitragMi, Feb 07, 2007 13:26
Antworten mit Zitat
Benutzer-Profile anzeigen
So, ich hab jetzt
Code: [AUSKLAPPEN]
RotateEntity s\schuss,EntityPitch(x#),EntityYaw(y#),EntityRoll(z#)

Kann das zumindest vom Ansatz her stimmen?
Ganz stimmen kann es nicht, weil ich bekomm immer wenn ich die Schuss-Tste drück' eine Fehlermeldung (Memory access violation).

@skey-z: Genau das ist es was ich versuche, bzw meine gemacht zu haben, aber es hat doch nicht so geklappt.. Aber dafür hab ich für den Antrieb statt Partikeln jetzt was besser passendes gefunden, und das klappt wenigstens. Smile

Mal eine andere Frage, ist es auch möglich das Mausrad abzufragen?
Nicht das klicken, weil das hab ich schon in verwendung, sondern das drehen/scrollen.

AMD Athlon 64 X2 5200+, MSI K9N Neo SKT AM2 ATX, 4096 MB RAM (Samsung, 533 MHZ DDR2), Radeon X1950XTX GDDR4 (512 MB RAM), 2x250 GB Samsung SATA HDD (8ms 7200U, 3GB/s(!Smile))

skey-z

BeitragMi, Feb 07, 2007 13:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Mausrad position: MouseZ()
Mausrad veränderung seit dem letzten durchlauf: MousezSpeed()

www.blitzbase.de, da hast du alle Befehle und ein paar Tutorials ind er Übersicht und auf Deutsch
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz
BAC#57: 2. Platz
Twitter
 

Willi3D

BeitragMi, Feb 07, 2007 15:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke.
Hab mich mal auf der Seite umgeschaut, und auch gleich mal die Hilfe-Datein runtergeladen.
Sind zwar schon wieder ein paar bisher genannte Probleme/Fragen gelöst, aber das Problem mit den Schüssen besteht weiterhin...
Was mach ich falsch? Sad

AMD Athlon 64 X2 5200+, MSI K9N Neo SKT AM2 ATX, 4096 MB RAM (Samsung, 533 MHZ DDR2), Radeon X1950XTX GDDR4 (512 MB RAM), 2x250 GB Samsung SATA HDD (8ms 7200U, 3GB/s(!Smile))
 

Dreamora

BeitragMi, Feb 07, 2007 15:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Dein problem oben ist, das du versuchst Yaw etc von einer koordinate zu holen.
Dort musst du das EntityHandle deiner Kamera einfügen nicht irgendwelche Positionen! (das Mousepick und picked zeug brauchst du garnicht, wenn du wirklich projektile verschiest. Der MousePick ansatz wird für Laser, MG und dergleichen benötigt, welche so viel und schnell schiessen, das es keine einzelnen projektile mehr gibt)
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

Willi3D

BeitragMi, Feb 07, 2007 16:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Also weder im Forum noch in der Hilfe von blitzbase finde ich irgendwas zu "EntityHandle" Sad

AMD Athlon 64 X2 5200+, MSI K9N Neo SKT AM2 ATX, 4096 MB RAM (Samsung, 533 MHZ DDR2), Radeon X1950XTX GDDR4 (512 MB RAM), 2x250 GB Samsung SATA HDD (8ms 7200U, 3GB/s(!Smile))
 

Dreamora

BeitragMi, Feb 07, 2007 16:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Dazu wirst du auch nix finden, das ist keine Funktion.

Ein EntityHandle ist eine Variable die das gespeichert hat, was du von LoadMesh, CreateLight etc bzw. in diesem Fall CreateCamera() zurück bekommen hast. Denn das musst du da einsetzen (was auch heisst das die Kamera in irgend einer Form global gespeichert sein muss)

Für PositionEntity durch Nutzung von TestObj hast du es ja auch hinbekommen.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

Willi3D

BeitragMi, Feb 07, 2007 17:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Kamera ist global gespeichert.
Aber wie soll ich das ganze verwenden?
Und wo ist da der Unterschied? Die Kamera befindet sich immer hinter dem Objekt, somit sind die Koordinaten ja fast identisch.
Soll das jetzt wie z.b. "EntityHandle(camera)" funktionieren?
Oder soll ich das PositionEntity bei der Kamera verwenden? Confused

AMD Athlon 64 X2 5200+, MSI K9N Neo SKT AM2 ATX, 4096 MB RAM (Samsung, 533 MHZ DDR2), Radeon X1950XTX GDDR4 (512 MB RAM), 2x250 GB Samsung SATA HDD (8ms 7200U, 3GB/s(!Smile))
 

Willi3D

BeitragMi, Feb 07, 2007 22:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Kennt sich da keiner aus? Sad

Was auch noch interessant wäre... Eine Art Unterwasser-Effekt. Habe schon mit einigen Objecten rumgespielt die normal transparent sind, und bei unterwasser 0.8 haben, klappt aber nur zum Teil so richtig.

Aber das Problem mit den Schüssen besteht weiterhin.. wäre nett wenn da jemden helfen könnte, der sich da auch auskennt. Ggf einen Beispielcode o.ä. anstatt nur immer Bruchstücke zu nennen wie man es vielleicht irgendwie halb hinbekommen könnte? Danke schonmal Smile

AMD Athlon 64 X2 5200+, MSI K9N Neo SKT AM2 ATX, 4096 MB RAM (Samsung, 533 MHZ DDR2), Radeon X1950XTX GDDR4 (512 MB RAM), 2x250 GB Samsung SATA HDD (8ms 7200U, 3GB/s(!Smile))
 

timmeTheOnly

BeitragMi, Feb 07, 2007 23:45
Antworten mit Zitat
Benutzer-Profile anzeigen
[code]
global cam = createcamera()

global eX = entityx(cam)
global eY = entityy(cam)
global eZ = entityz(cam)
[code]

MfG
T-Master
 

Dreamora

BeitragDo, Feb 08, 2007 0:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Willi: Ich bin nicht Gott und weiss darum nicht, wie deine Kamera Entity als Variable heisst.
Wie wärs wenn du einfach Mal dine die Dokumentation schauen würdest.
Des weiteren hat es hier im Tutorial Board und auf www.robsite.de in den Tutorials verschiedene Tutorials. Mach die am besten Mal.

Wir sind nicht dazu da dir Code zu liefern, denn schliesslich willst DU programmieren, nicht wir.
Wenn du trotz all den Hinweisen immer noch nicht in der Lage bist das Problem zu lösen, beschäftig dich erst Mal mit 2D bevor du dich an Entity und 3D machst, denn dann wäre es definitiv zu kompliziert für deinen aktuellen Wissensstand.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

Willi3D

BeitragDo, Feb 08, 2007 1:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
global eX = entityx(cam)
global eY = entityy(cam)
global eZ = entityz(cam)

diese Vars liefern mir immer 0 zurück.
Und ich habe die Vars angepasst (camera).

Also bei der länge des Codes denk ich nicht das man da etwas falsch machen könnte, aber warum klappt es nicht?
Oder soll' ich diese erst mit den schon früher verwendeten Vars füllen?!?

@Dreamora: Und das hast du nicht fragen können, bzw etwas posten was mir mehr weiterhilft und halt schreiben "Diese Var musst du ggf. anpassen"? Confused Rolling Eyes
Ich will ja keinen ganzen Code, und verlangen kann ich ja sowieso nix von jemanden hier, aber es wäre hilfreich. Und ich dachte mir dieses Forum ist hier damit User anderen helfen...
Das Problem ist noch nicht gelöst, ist aber das einzige. 2D verwende ich, und mehr als ich verwende brauch' ich ja eigentlich nicht. Ich habe Blitz3D nicht für 2D Sachen Razz
Außerdem ist es doch nur eine Frage.. ist das wirklich sooo schlimm?

AMD Athlon 64 X2 5200+, MSI K9N Neo SKT AM2 ATX, 4096 MB RAM (Samsung, 533 MHZ DDR2), Radeon X1950XTX GDDR4 (512 MB RAM), 2x250 GB Samsung SATA HDD (8ms 7200U, 3GB/s(!Smile))

Gehe zu Seite 1, 2  Weiter

Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten.


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group