Gegner bewegen, immer neuen Type?

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

Megamag

Betreff: Gegner bewegen, immer neuen Type?

BeitragMi, Jun 04, 2008 16:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi, es geht wieder um meinen 3D/2D Weltraumshooter.
Die Gegner sollen ja nicht immer nur gerdeaus fliegen, sondern
auch mal, wenn sie in der Mitte des Bildschirms sind, umdrehen
oder dass vom Hintergrund Gegner kommen, und über die Z-Achse eine Kurve fliegen. Oder drei Gegner, der in der Mitte fliegt nach vorne,
die Anderen schräg, zur Mitte hin, nach hinten. Ich habe das
ganze mit neuen Types gelöst (T_enemy1,T_enemy1_back_bend_z,
T_enemy1_back_turn,T_enemy1_round,usw.). Gibt es da nicht
eine einfachere Lösung?

Angelo

BeitragMi, Jun 04, 2008 16:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Also wenn deine Gegner mit einem Type Generiert werden kannst du sie nur mit

For g.objects = Each objects
;befehle einfügen
next

steuern.
Außer du sprichst jeden einzeln an, aber dann musst du jedem eine ID geben.
Aber das stelle ich mir dann wieder noch aufwendiger vor.
Alles was ich sagen kann, können auch andere ^^

Megamag

BeitragMi, Jun 04, 2008 17:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Das mit der ID ist gut!
Das werde ich mal ausprobieren.

Willi die Rübe

BeitragMi, Jun 04, 2008 18:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Angelo hat Folgendes geschrieben:
Also wenn deine Gegner mit einem Type Generiert werden kannst du sie nur mit

For g.objects = Each objects
;befehle einfügen
next

steuern.
Außer du sprichst jeden einzeln an, aber dann musst du jedem eine ID geben.
Aber das stelle ich mir dann wieder noch aufwendiger vor.


Naja normal hat jeder erstellte Type schon sein eigene ID. Die kriegt man mit ID = Handle(Type)
und das Typehandle selbst kriegt man dann wieder mit Type=Object(ID). Lies dir dazu am besten mal das Tutorial in der Onlinehilfe durch, das ist sehr empfehlenswert Wink
Ich habe keine Lösung, aber ich bewundere das Problem.
Tehadon
Q6600, MSI Neo2-FR, 4GB Ram, nVidia 7800 GTX

At the Farewell Party visit: MySpace | Homepage

Megamag

BeitragMi, Jun 04, 2008 19:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich glaube, ich löse das mit
Code: [AUSKLAPPEN]
Function create_enemy(x,y,z,ent,ID)

und dann
Code: [AUSKLAPPEN]
for e.Enemy1 = Each Enemy1
If e\ID = 1 ;und so weiter

Danke an euch!

Willi die Rübe

BeitragMi, Jun 04, 2008 20:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja und das ist ansich unnötig, da ja jedes Type automatisch schon seine ID kriegt(übrigens durchnummeriert, beginnend ab 1).

Beispiel:

Code: [AUSKLAPPEN]




Function CreateEnemy()   
   Local enemy.TEnemy   =   New TEnemy
   Return Handle(enemy.TEnemy)   
End Function

Function MoveEnemy(ID, x,y,z)
   Local enemy.TEnemy         =   Object.TEnemy (ID);
   enemy\x=x
   ;usw.
end function


Somit erhält man dann ganz einfach zu kontrollierende Funktionen, die auch noch übersichtlich aussehen Wink

Code: [AUSKLAPPEN]
Testgegner=CreateEnemy()

MoveEnemy(Testgegner, 5,0,5)
Ich habe keine Lösung, aber ich bewundere das Problem.
Tehadon
Q6600, MSI Neo2-FR, 4GB Ram, nVidia 7800 GTX

At the Farewell Party visit: MySpace | Homepage

Megamag

BeitragMi, Jun 04, 2008 20:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Da komm' ich nicht ganz hinterher Shocked
Ich werde das mal so machen, wie ich oben beschrieben habe.

Xeres

Moderator

BeitragMi, Jun 04, 2008 23:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Die Sache ist die: Wenn du deine Types selbst durchnummerierst, musst du auch dafür sorge tragen das keine ID 2x vergeben wird. Das kann man auch schaffen, aber handle zu verwenden ist weit einfacher und sicherer. Sobald du viele Types erstellst und wieder löschst gehen dir dann bald die Zahlen aus, da sind Fehler über längere/lange Programmlaufzeiten wahrscheinlich.
Mach wie du denkst, egal was rauskommt, man lernt was dabei...
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)

Megamag

BeitragDo, Jun 05, 2008 8:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Es geht mir nicht darum, jeden Type eine ID zu geben, sondern
jedem Gegner Type. Ich definiere also in der Erstellungsfunktion eine
Id und in der Update Funktion wird gefragt, welche ID es hat, und
wenn die 1 ist, fliegt der normal, wenn sie 2 ist scgräg usw. Da
hätte ich aber auch früher drauf kommen können Rolling Eyes

BladeRunner

Moderator

BeitragDo, Jun 05, 2008 16:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Und wenn Du es übersichtlich halten willst leg die Gegnertypen als Konstanten an
Const ENEMY_GERADE = 1
Const ENEMY_ZICZAK = 2
...
das macht den Code deutlich lesbarer Wink
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

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group