Entity-Problem mit Typen und Funktionen (3D)
Übersicht

![]() |
GoldiniBetreff: Entity-Problem mit Typen und Funktionen (3D) |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi, Leute
Ich hab en Problem..... seht mal: Code: [AUSKLAPPEN] Type ROBOT_KI Field robo Field pisge Field pis2ge Field p1 Field p2 End Type KI_GE() While not KeyHit(1) updaterobo() RenderWorld Flip Wend Function KI_GE() For t=0 To 10 rk.ROBOT_KI=New ROBOT_KI rk\robo=LoadMesh("robot2.x")PositionEntity rk\robo,Rnd(-80,300),600,Rnd(-80,300) EntityType rk\robo,GE EntityRadius rk\robo,3 ScaleMesh rk\robo,5,5,5 rk\pisge=LoadMesh("wep3.3ds")PositionEntity rk\pisge,EntityX(rk\robo)+4.5,EntityY(rk\robo)+8.5,EntityZ(rk\robo)+2 TurnEntity rk\pisge,-90,90,0 ScaleMesh rk\pisge,.2,.2,.2 EntityParent rk\pisge,rk\robo rk\pis2ge=LoadMesh("wep3.3ds")PositionEntity rk\pis2ge,EntityX(rk\robo)-5.5,EntityY(rk\robo)+8.5,EntityZ(rk\robo)+2 TurnEntity rk\pis2ge,-90,90,0 ScaleMesh rk\pis2ge,.2,.2,.2 EntityParent rk\pis2ge,rk\robo rk\P1=LoadSprite("sun.bmp",2+48)PositionEntity rk\P1,EntityX(rk\robo)+4.5,EntityY(rk\robo)+8.5,EntityZ(rk\robo)+2 ScaleSprite rk\P1,7,7 EntityParent rk\P1,rk\robo rk\p2=LoadSprite("sun.bmp",2+48)PositionEntity rk\p2,EntityX(rk\robo)-5.5,EntityY(rk\robo)+8.5,EntityZ(rk\robo)+2 ScaleSprite rk\p2,7,7 EntityParent rk\p2,rk\robo HideEntity rk\P1 HideEntity rk\p2 Next End Function Function updaterobo() TranslateEntity robo,0,-.5,0 End Function bei TranslateEntity sagt er immer: Entity doese not exist. Warum ich krieg den Fehler nicht behoben... vielleicht schafft ihr es ja. (Code ist gekürzt) Mfg Goldini2 |
||
Mit diesen Zeilen danke ich einer Person, die mich für so wichtig hält, dass sie sogar einen Club nach mir benannt hat!
Danke! ![]() |
Lion |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Code: [AUSKLAPPEN] TranslateEntity rk\robo,0,-.5,0
Sollte so gehen , zmd gehts bei mir so... |
||
Intel Core 2 Quad 4x2.66 ghz - 4gb ddr2 - nvidia GeForce GTX660 2gb
Intel Atom 1x1.83 ghz - 2gb ddr2 - intel GMA 3150 256mb AMD A10-5750M 4x2.5 ghz - 8 gb ddr4 - AMD R9 M290x |
![]() |
Goldini |
![]() Antworten mit Zitat ![]() |
---|---|---|
Jetzt sagt er: Vabriable must be a type.
Mfg |
||
Mit diesen Zeilen danke ich einer Person, die mich für so wichtig hält, dass sie sogar einen Club nach mir benannt hat!
Danke! ![]() |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Da Types 'beliebig' viele Einträge beinhalten können, müssen diese auch durchgangen werden. Das geht zB mit einer For Each -Schleife oder wenn die Position deines robo immer die selbe ist, mit ql:Object. | ||
![]() |
Goldini |
![]() Antworten mit Zitat ![]() |
---|---|---|
Kapier ich nicht was du damit sagen willst....
Mfg |
||
Mit diesen Zeilen danke ich einer Person, die mich für so wichtig hält, dass sie sogar einen Club nach mir benannt hat!
Danke! ![]() |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du hast u.a.
Code: [AUSKLAPPEN] Type ROBOT_KI
Field robo Field pisge Field pis2ge Field p1 Field p2 End Type Der Sinn von Types ist ja, beliebig viele Einträge zu erstellen. Erstellen geht mit (was du ja auch schon hast (gleich 11 Stück auf einmal)) Code: [AUSKLAPPEN] rk.ROBOT_KI=New ROBOT_KI
Da Blitz jetzt aber wissen muß welchen du genau meinst, muß du dies angeben. In der Regel geht man alle durch, da Types eher dafür gedacht sind, Sachen zu machen, deren Anzahl man nicht erahnen kann. Bei Schüssen ist dies der Fall. Willst du alle bewegen/verändern etc. so kannst du das mit einer ql:For ql:Each -Schleife machen. Willst du aber nur genau den einen ansprechen, so geht das mit der Handle des Typeseintrages. Dazu schaue dir den Befehl ql:Object an. Das letztere sollte aber auch durch ql:Dim oder ql:CreateBank gelöst werden könnne. Je nachdem, was grade anliegt. Im Normalfall werden alle ROBOTs bewegt, so schaue erst mal dir die Schleife an. edit1: Falls noch nicht geschehen, so lade dir die deutsche Onlinehilfe http://www.blitzbase.de/downloads/onlinehilfe.zip runter. Ist super! |
||
![]() |
Goldini |
![]() Antworten mit Zitat ![]() |
---|---|---|
Den Befehl Object kappier ich nicht...
mfg |
||
Mit diesen Zeilen danke ich einer Person, die mich für so wichtig hält, dass sie sogar einen Club nach mir benannt hat!
Danke! ![]() |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich meinte ja auch - schaue dir erst mal die Schleife an. Es sollte das sein, was du suchst. Willst du aber genau den einen Typeeintrag ansprechen, so muß der Typeeintrag per Handle angesprochen werden. Dieses geht auch in einer ähnlichen aber einfacheren weise mit Dims oder Banks.
Nenne uns doch, was genau du machen willst. Dann können wir dir auch gezielter helfen. Falls du es denoch unbedingt mit Handle machen willst, so schaue dir mal den Code - [B3D] Physik 4WD Buggy in 2D oder 3D - aus dem Codearchive an. |
||
![]() |
Goldini |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich hab en Spiel programmiert und da muss man Roboter abknall die an unterschiedlichen Orten sind. Allerdings möchte ich die Roboter alle einzeln steuern lassen so das nicht wenn ich einen besiege gleich alle besiegt habe. Mehere Roboter erstellen zu lassen ist zu viel Aufwand. Ihr habt ja gesehen was das erstellen für ein Aufwand ist das hier ist nur ein Roboter und UpdateRobo beinhaltet noch viel mehr. Ich hab euch nur die erste Zeile von UpdateRobo geschickt denn bei der hagt es schon.
Hoffe die Informationen sind genug. Mfg Goldini2 |
||
Mit diesen Zeilen danke ich einer Person, die mich für so wichtig hält, dass sie sogar einen Club nach mir benannt hat!
Danke! ![]() |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du erstellst bereits 11 Roboter, denn du hast - For t=0 To 10 - da drinne. Un bei jedem Schleifendurchlauf hast du - rk.ROBOT_KI=New ROBOT_KI - da drinne. Dazu lädst du jedesmal ein neues Mesh, geht übrigens besser und schneller mit ql:CopyMesh oder ql:CopyEntity.
wenn du nun alle 11 erstellten Roboter bewegen willst, so mache es mit einer For Each -Schleife. Schaue dir mal den Befehl einmal an. Es kann nicht sein, das 2min nach einer Hilfestellung von mir, bereits ein weiterer Eintrag von dir kommt mit dem Inhalt 'Verstehe den Befehl nicht ...' etc. Types sind etwas, wofür du dir ruhig mal etwas Zeit geben solltest. Wenn du nur wenig Erfahrung mit Programmieren hast, dann etwa einen Tag. Eine For/Each -Schleife geht ja nicht eine von dir vorgegebene Anzahl Schleifendurchgänge durch, sondern die Anzahl der tatsächlich verfügbaren Typeeinträge. Wenn du also zwischendurch ein paar Roboter abknallst, so löscht du diese aus dem Typeeintrag. Wenn keine mehr vorhanden sind, dann kann immernoch die For/Each -Schleife aufgerufen werden, und keine Fehlermeldung kommt. In der gesammten Zeit können natürlich auch weitere Roboter erstellt werden etc... Types verwalten sich von alleine. Da muß man nicht viel machen. Nur verstehen sollte man die. Ich habe auch meine Zeit dafür gebraucht. es gibt übrigens ein Tutorial in der deutschen Onlinehilfe zu Types. Oder schaue dir mal einfach die Programmbeispiele dieser Onlinehilfe an. edit1: Wenn du eine For/Each -Schleife benutzt, so heisst das nicht, dass alle Roboter sich syncron bewegen müssen. jeder kann und sollte seine eigene Position, Bewegungsrichtung und Eigenschaften haben. Es können sich sogar unterschiedliche Roboter in einem Typefeld befinden und unterschiedlich verhalten. |
||
![]() |
Goldini |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich hab jetzt ne For/Each Schleife. Aber wenn ich an einen Roboter zu nah heran komme schießen gleich alle auf mich.
Mfg |
||
Mit diesen Zeilen danke ich einer Person, die mich für so wichtig hält, dass sie sogar einen Club nach mir benannt hat!
Danke! ![]() |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
... Dann braucht jede Typeliste ein weiteren Eintrag, in etwa eines Verhaltensmusters (Patrolieren, Überwachen, Fliehen, Angreifen etc.) des jeweiligen Roboter. Also in etwa:
Code: [AUSKLAPPEN] Type ROBOT_KI
Field robo Field pisge Field pis2ge Field p1 Field p2 Field verhalten End Type Kommst du einem zu nahe, so soll sich das Verhalten des einen in eines anderen verändern, zB in Angrif. Angrif = Zu einem bewegen und schiessen Fliehen = Wenn die Lebensenergie vom Roboter eine bestimmte Grenze erreicht hat. Überwachen = Roboter folgt seinem Überwachungsobjekt. Patrolieren = Roboter patroliert einer vorgegebenen Route. Jedes Verhalten kann zB in Funktionen untergebracht werden, die dann den jeweiligen Roboter steuert. |
||
![]() |
Goldini |
![]() Antworten mit Zitat ![]() |
---|---|---|
Äh ich kappier nicht so ganz wie ich eine Funktion schreiben soll die einen Roboter von den Anderen unterscheiden kann.
Mfg |
||
Mit diesen Zeilen danke ich einer Person, die mich für so wichtig hält, dass sie sogar einen Club nach mir benannt hat!
Danke! ![]() |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group