[3D] Türen, Türen für Dummies.. +Teil2 Fortgeschritten
Übersicht

![]() |
DottakopfBetreff: [3D] Türen, Türen für Dummies.. +Teil2 Fortgeschritten |
![]() Antworten mit Zitat ![]() |
---|---|---|
[3D] Türen, Türen für Dummies.. so wirds gemacht (Sprache: BlitzBasic3D) Inhalt: Teil 1 Hardcodierte Türen... hier wird für beginner mit wenig schnick schnack die Grundidee gezeigt Teil 2 Für Fortgeschrittene Nutzer, Türen werden Dynamisch geladen und Positioniert, zentrale verwaltung der Türen in Funktionen. Guten Tag Blitzer Noobies ! Teil 1 aufgrund eines Posts hier im Beginners Bereichs, möchte ich dieses Mini Tutorial niederschreiben. Der Umfang des Tutorials ist fast zu gering um es hier zu veröffentlichen... aber vielleicht finde ich noch die Muse es noch etwas umfangreicher zu gestalten... -und ja..ich fand die Muse Was wird hier gezeigt? Nunja.. wie es der Titel schon verrät geht es darum wie man mit super einfachen mitteln Türen in eure 3D welt implementiert. Bei der Tür handelt es sich um eine Schiebetür, welche erst ein stück nach hinten fährt und anschließend sich zur Seite bewegt. Mit der von mir gezeigten Technik, könnt ihr natürlich Türen in allen Formen erstellen da das Prinzip immer das gleiche bleibt. Was setze ich von euch an Vorwissen vorraus ? ich versuche meine Tutorials ziemlich schlicht und schnell verständlich zu halten. Erfahrene User können den gezeigten code auf wenige zeilen kürzen, aber in unserem Fall habe ich es möglichst ausfühlich gemacht. Das solltest du bereits können ![]() ![]() ![]() (tu es.. https://www.blitzforum.de/help/?subcat=57 ) insebesondere : BlitzBasic: [AUSKLAPPEN] Animate ![]() Also los, ... die Idee der 3D Tür !!!!!! Bevor wir uns jetzt wie wild auf meinen Code stürzen, erkläre ich kurz wie das mit der Tür in der Theorie funktioniert. Ich erstelle in einem Modeller (Milkshape3D) ein Tür Modell. Dieses Modell ist super simpel aufgebaut. 3 Quader - 2 Quader die als "Wand" fungieren - 1 Quader der die Tür darstellt. Nachdem ich meine Tür modeliert habe definiere ich eine Tür-Animation. Diese Animation setzt sich aus 3 Punkten zusammen. ![]() ![]() ![]() Beim Modellieren nennt man diese Punkte "keyframes" Diese Arbeit habe ich in 15 Min vollendet und sieht im Modeller(Milkshape3D) dann so aus... ziemlich spektakulär nicht wahr??? ![]() (die gelbe Linie, mit den 2 Blauen bommeln, man nennt Sie Joints, dienen als Zugriffspunkte um die Animation im Modeller zu definieren) Nun.. das war erstmal die Modelierungsarbeit. Kommen wir zum theoretischen Ablauf im Code. Unsere Tür kan 2 verschiedene Statuse erlangen ![]() ![]() Wenn wir das wissen, und dass wissen wir, weil wir Programieren ja nicht ohne Hirn und machen uns IMMER vorher Gedanken... ist der Rest denkbar einfach. Wir müssen jetzt nur noch überprüfen welchen Status die Tür hat, und ob sie sich gerade bewegt. Durch ein Ereigniss(bei uns die Entertaste) wird der Status der Tür geändert und die Tür Animiert. ![]() Endlich... Endlich.. lass uns Coden!! Hm.. ganz erlich.. jetzt habe ich schon so viel geschrieben, und der Umfang ist einfach viel zu gering als dass ich jetzt Codezeile für Codezeile herauspicken wollte und nochmal 10 Zeilen dazuschreiben möchte. Also bekommt ihr hier von mir den kompletten GUT AUSKOMMERTIERTEN Source Code. Hier das ganze als Zip: (Sourcen) nur mit diesem wird sich da irgendwas bewegen... Aus Webspace Platz Technischen Gründen wurden die Source von Teil 1 und Teil 2 zusammengefügt. - Upload tot, weis auch nicht warum die Datei plötzlich nicht mehr existiert - Tut euch selbst einen Gefallen und zieht es in euer Blitzbasic rein. Zeilenumbrüche sind hier halt nicht schön. Damit ihr das ganze auch ausführen könnt, braucht Ihr die dazugehörigen Sourcen.... Code: [AUSKLAPPEN] ;########################################## ;# # ;# Dottakopfs 3D Door Tutorial!! # ;# http://www.blitzforum.de # ;# # ;########################################## ;Gut diesen Block werde ich wohl nicht mehr erklären müssen Graphics3D 800,600,32,2 SetBuffer BackBuffer() Global FPStimer = CreateTimer( 60 ) ;------------------------------------------------ Globals ---------------------------------------- Global Door_State ;Speichert den Status der Tür State=1 Tür wurde geöffnet State=0 Tür wurde geschlossen Global Door_Moving ;Bewegt sich gerade die Tür? ;--------------------------------------------- Initialisieren ----------------------------------- ;##CAM Global GameCam = CreateCamera() MoveEntity GameCam,0,3,-20 ;##licht AmbientLight 160,160,160 ;damit nicht alles so trostlos aussieht licht = CreateLight() MoveEntity licht,10,10,-3 ;##Level ;door Global EntityDoor1 = LoadAnimMesh("door.b3d") ;Das Tür Modell wird als Animiertes Objekt geladen ScaleEntity EntityDoor1,0.1,0.1,0.1 ;Auf annehmbare größe bringen RotateEntity EntityDoor1,0,-90,0 ;Richtung Kamera drehen ;///////////////////////////////////////////// MAIN LOOP \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ Repeat Cls WaitTimer(FPStimer) move_player() update_doors() UpdateWorld() RenderWorld() Text 0,0,"Drücke ENTER zum öffnen/schließen" ;ein paar infos Text 0,10,"Pfeiltasten zum Bewegen" Text 0,40,"Door_state: "+Door_State Text 0,50,"Door_moving: "+Door_Moving Flip 0 Until KeyHit(1) ;/////////////////////////////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ ;Spieler Bewegung Function move_player() ;Movement der Camera.... Nunja...das sollte auch noch jeder hinbekommen If KeyDown(200) Then MoveEntity GameCam ,0,0, +0.1 If KeyDown(208) Then MoveEntity GameCam ,0,0, -0.1 If KeyDown(203) Then TurnEntity GameCam ,0,+1, 0 If KeyDown(205) Then TurnEntity GameCam ,0,-1, 0 End Function ;Aktualisiert die Türen Function update_doors() ;Tür mechanismus mit der Enter taste auslösen ( nur auslösen wenn tür steht) ;Wenn die Tür sich nicht bewegt wird der Tür Status verändert If KeyHit(28) And Door_Moving=0 Then Door_State = Door_State +1 ;Status wird verändert Door_Moving=1 ;Tür ist nun in bewegung If Door_State >1 Then Door_State = 0 ;damit Status nur 1 oder 0 hat End If ;Tür animation vorwärts abspielen ( tür öffnet sich ) Modus=3,und Speed(0.05) If Door_State = 0 And Door_Moving = 0 Then Animate EntityDoor1,3,+0.05,0,0 ;Parameter siehe unter hilfe und dann "Animation" ;Tür animation Rückwärts abspielen ( Tür schließst sich ) If Door_State = 1 And Door_Moving = 0 Then Animate EntityDoor1,3,-0.05,0,0 ;wenn die Animation "fertig" abgespielt wurde, muss natürlich Moving auf 0 zurück gesetzt werden(damit oben Status Abfrage greifen kann) If Animating(EntityDoor1)=0 Then Door_Moving = 0 End Function ;Viel Erfolg So fertig!... ich hoffe das es dem ein oder anderen Mal eine schnelle Hile sein wird. Feedback ist immer erwünscht. Teil 2 So erstellt man Türen die auch Projekttauglich sind!!! Dieser 2. Teil richtet sich an bereits etwas Fortgeschrittene User, aber auch beginner sollen sich nicht abschrecken lassen sich diesen Part anzusehen und etwas herumzuspielen. Im 1. Teil habe ich euch rein die Technik der Tür bzw. eine der Möglichen Möglichkeiten gezeigt wie man sie umsetzt. Jetzt zeige ich euch wie es wirklich gemacht werden sollte. Sprich weg von Hardcodierten Türen und hin zu dynamic, mithilfe von Types und leveldateien. Was brauche ich für Vorraussetzungen: ![]() ![]() ![]() ![]() Was ist nun so großartig "toller und besser" geworden ?? vorher wurde ein Mesh geladen, und dieses über globale Varriablen kontroliert. Klarer Nachteil... viele Türen in euer Projekt einzufügen wird total unübersichtlich, viel Schreibarbeit... und Veränderungen müssen in alle einzelne Türen nachcodiert werden ---> uncool. ![]() Jetzt wird ein Typ definiert. Die Idee ist, dass es einen Typ für alle Objekte gibt die im Spiel verwendet werden sollen, und etwas machen sollen. In unserem Beispiel wird es nur eine Tür sein. Aber es könnten auch Fackeln oder Kisten welche explodieren sein... ![]() Zudem gibt es nun in dem Ordner eine "level.txt". In dieser wird definiert wo sich die tür befindet inkl. Drehung und co. Spielt in ihr herum und seht was passiert ![]() Zu unserem Type: Dieser Typ der für unsere objekte steht sieht dan so aus: Code: [AUSKLAPPEN] Type TYPE_Objekt Field Obj_Type ;was ist es ein Objekt(Kiste,Fackel,Tür etc..) Field Obj_Posx# Field Obj_Posy# Field Obj_Posz# Field Obj_State ;Zustand des Objekts Field Obj_Entity ;3D Handle End Type wie ihr seht sind die Eigenschaften(Felder des Types) sehr allgemein gehalten. Das Feld Obj_Type gibt an was es für ein Objekt ist... aber das ist hier heute nur mal Optional. Wie ich bereits sagte werde ich auf die Technik, Bzw. der Ablauf der Tür hier nicht noch einmal genau eingehen. Im Teil 1 findet Ihr alles wissenswertes.... Zudem ist der Source Code gut und verständlich kommentiert. Hier nocheinmal der DL mit den Tür-Sourcen und der Level Datei zur Positionierung der Türen - Upload tot, weis auch nicht warum die Datei plötzlich nicht mehr existiert - Hier der Source Code: (Nur mit Sourcen lauffähig) Code: [AUSKLAPPEN] ;########################################## ;# # ;# Dottakopfs 3D Door Tutorial!! # ;# http://www.blitzforum.de # ;# Fortgeschritten # ;########################################## ;Gut diesen Block werde ich wohl nicht mehr erklären müssen Graphics3D 800,600,32,2 SetBuffer BackBuffer() Global FPStimer = CreateTimer( 60 ) ;------------------------------------------------ Globals ---------------------------------------- ;------------------------------------------------- TYPES ----------------------------------------- Type TYPE_Objekt Field Obj_Type ;was ist es ein Objekt(Kiste,Facke,Tür etc..) Field Obj_Posx# Field Obj_Posy# Field Obj_Posz# Field Obj_State ;Zustand des Objekts Field Obj_Entity ;3D Handle End Type ;--------------------------------------------- Initialisieren ----------------------------------- ;##CAM Global GameCam = CreateCamera() MoveEntity GameCam,0,3,-20 ;##licht AmbientLight 160,160,160 ;damit nicht alles so trostlos aussieht licht = CreateLight() MoveEntity licht,10,10,-3 ;##Einen Boden (damits nicht so leblos aussieht) boden = CreatePlane() EntityColor boden,0,100,0 ;##Meshes laden ;door Global EntityDoor1 = LoadAnimMesh("door.b3d") ;Das Tür Modell wird als Animiertes Objekt geladen ScaleEntity EntityDoor1,0.1,0.1,0.1 ;Auf annehmbare größe bringen RotateEntity EntityDoor1,0,-90,0 ;Richtung Kamera drehen HideEntity EntityDoor1 ;erstmal verstecken ;############# Level, Meshes auf Textdateien laden ####################### load_level(1) ;///////////////////////////////////////////// MAIN LOOP \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ Repeat Cls WaitTimer(FPStimer) move_player() update_doors() UpdateWorld() RenderWorld() Text 0,0,"Drücke ENTER zum öffnen/schließen" ;ein paar infos Text 0,10,"Pfeiltasten zum Bewegen" Flip 0 Until KeyHit(1) ;/////////////////////////////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ ;Spieler Bewegung Function move_player() ;Movement der Camera.... Nunja...das sollte auch noch jeder hinbekommen If KeyDown(200) Then MoveEntity GameCam ,0,0, +0.3 If KeyDown(208) Then MoveEntity GameCam ,0,0, -0.3 If KeyDown(203) Then TurnEntity GameCam ,0,+1.5, 0 If KeyDown(205) Then TurnEntity GameCam ,0,-1.5, 0 End Function ;Aktualisiert die Türen Function update_doors() ;das Herzstück.. die steurung der Türen ;das Prinzip ist einfach. Die Tür kann 2 Statuse erlangen. ; - Status = 1 die tür wurde gerade geöffnet vorher war status auf 0.. ; - Status = 0 die tür wurde gerade geschlossen vorher war status auf 1 ... For Tdoor.TYPE_Objekt = Each TYPE_Objekt Tur_Child = FindChild(Tdoor\Obj_entity,"Joint_door") ;dieser Joint ist in der Mitte der Tür If EntityDistance(GameCam,Tur_child) <= 10 And Animating(Tdoor\Obj_entity)=0 Then ;sind wir nah genug an der Tür? If KeyHit(28) Then If Tdoor\Obj_state = 0 And Animating(Tdoor\Obj_entity)=0 Then Animate Tdoor\Obj_entity,3,+0.05,0,0 : Tdoor\Obj_state = 1 ;1x Animation vorwärts abspielen. Die tür öffnet sich If Tdoor\Obj_state = 1 And Animating(Tdoor\Obj_entity)=0 Then Animate Tdoor\Obj_entity,3,-0.05,0,0 : Tdoor\Obj_state = 0 ;1x Animation von hinten beginnend(speed negativ) abspielen. Die Tür schließt sich End If End If Next End Function ;Level und seine Objekte laden (in unserem Fall nur Türen ) Function load_level(current_level) file$ = ReadFile("level.txt") infotxt$ = ReadLine(file) ;Info texte infotxt$ = ReadLine(file) ;Info texte door_count = ReadLine(file) ;gibt an wie viele Türen in unserem level sind For x = 1 To door_count infotxt=ReadLine(file) ;Info Texte Tdoor.TYPE_Objekt = New TYPE_Objekt ;nun beginnen wir bei jedem durchlauf eine Tür zu erstellen Tdoor\Obj_Type = ReadLine(file) ;was für ein objekt TYPE = 1 also ist es ne tür... haben ja nur türen :-) Tdoor\Obj_PosX = ReadLine(file) Tdoor\Obj_Posy = ReadLine(file) Tdoor\Obj_Posz = ReadLine(file) Tdoor\Obj_state = 0 Tdoor\Obj_entity = CopyEntity(EntityDoor1) ;Das 3D Modell für unser Objekt Type xRotate = ReadLine(file) ;drehung und so.. nice to have yRotate = ReadLine(file) zRotate = ReadLine(file) PositionEntity Tdoor\Obj_entity,Tdoor\Obj_PosX,Tdoor\Obj_PosY,Tdoor\Obj_PosZ ;Objekt noch ausrichten RotateEntity Tdoor\Obj_entity,xRotate,yRotate,zRotate ShowEntity Tdoor\Obj_entity ;zum schluss noch das Objekt zeigen(wurde ja ganz am anfang versteckt) Next CloseFile(file) End Function ;Viel Erfolg ;~IDEal Editor Parameters: ;~C#Blitz3D Ich hoffe das hat euch weitergeholfen, und auch einige User im Forum nun befriedigt, was Qualität und co betrifft. Zudem habe ich mich dazu entschlossen die Kommentare doch nicht Sperren zu lassen. Nur wer sein Feedback kennt kann daraus lernen. ![]() das wars... Gruß Dottakopf |
||
- Zuletzt bearbeitet von Dottakopf am Mi, Apr 24, 2013 12:30, insgesamt 20-mal bearbeitet
![]() |
biggicekeyBetreff: macht es bloß nicht so! |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich finde es sehr löblich das du ein Tutorial schreibst, aber oh man...
Du machst es zum einen super umständlich und zum anderen gewöhnst du Neulingen noch schlechte Dinge an. -Es ist alles hardcoded. -Es kann nur eine Tür geben. -Diese wird global verwaltet. -Die Funktion heißt "updatedoorS" obwohl es nur eine Tür gibt -Der Benutzer muss ein Modeler bemühen, und dann noch einen Kostenpflichtigen. -Das Model könnte auch im Code erzeugt werden. Daraus folgende Verbesserungsvorschläge: -benutze Types! -zeig wie man damit mehrere Türen verwaltet. -erstelle die Türen in einer Funktion im Code (doppelter Lerneffekt!) Vielen Dank |
||
#45 www.icekeyunlimited.de www.starcrusade.de
Gewinner BCC#17 !!! mit dotkiller Nothing more to register - you've cleaned us out![/size] |
![]() |
Dottakopf |
![]() Antworten mit Zitat ![]() |
---|---|---|
so.. jetzt hör mir mal ganz genau zu guter man....
ich werde jetzt versuchen mich nicht weiter aufzuregen, da du scheinbar den Text nur überflogen hast. Zitat: ![]() Zitat: ich versuche meine Tutorials ziemlich schlicht und schnell verständlich zu halten. Erfahrene User können den gezeigten code auf wenige zeilen kürzen, aber in unserem Fall habe ich es möglichst ausfühlich gemacht. - natürlich ist es Hardcoded da ich hier nur die Technik der Tür zeige.. und die 5 Zeilen die zur aktualisierung der Tür gebraucht werden werden unter verwendung von Types oder Arrys genauso benötigt. - Es kann nur eine Tür geben... oh backe... es geht garnicht darum mehrere Türen hier zu setzen... - Milkshape3D kann praktisch uneingeschränkt 30 Tage lang genutzt werden ! Zudem habe ich EXTRA einen screen hochgeladen, damit man das mal gesehen hat. Was im Modeller zu machen ist(Egal welcher) wurde sauber erklärt. - Natürlich hätte ich das Model auch im Code erzeugen können, aber versetz dich doch mal in die lage eines Beginners, da verwirren nur 40 Zeilen Code die allein für das Model und dessen Keyframes erzeugt werden. Siehe mein 2tes Zitat !!! Und zu deinen Verbesserungsvorschlagen siehe Zitat Nr1.... Fakt.. du hast nicht die Bohne verstanden was ich in diesem Tutorial veranschaulichen wollte. Prinzipjell hast du vollkommen recht, Türen machen nur in verbindung mit Types oder noch besser mit Arrys sinn. Ich könnte jetzt ein komplettes Beispiel mit Trigger und co. schreiben, nur ich hab keine lust das Copy Paste geflame wieder losgeht. Also versuche ich nur die Technik zu zeigen und den Rest soll sich der Anwender selber erarbeiten. Der Anlässliche Post warum das Tut entstand. https://www.blitzforum.de/foru...hp?t=36977 |
||
Rechtschreibfehler gelten der allgemeinen Belustigung! |
- Zuletzt bearbeitet von Dottakopf am Do, Apr 14, 2011 20:10, insgesamt 2-mal bearbeitet
E. Urbachehemals "Basicprogger" |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Anfänger sollen in deinen Augen nur die "schlechte" Variante des Codes sehen und sich dann die richtige Variante selbst ausdenken?
Der Grundgedanke bei Tutorials ist, die richtige Vorgehensweise zu zeigen - und nicht im Voraus zu sagen, dass es so oder so schlecht ist und besser hätte gemacht werden können. Nimm dir doch eben die 5 Minuten und überarbeite es. Es ist momentan mehr eine Antwort zu der von dir verlinkten Frage als ein würdiger FAQ/Tutorial Eintrag. |
||
The box said, "Requires Windows XP or better", so I installed Ubuntu | Linux is NOT Windows
Flua :: Profiler für BB und BMax :: Partikel-Engine für BMax :: Lyphia-Projekt Quellcode (BMax) :: Automatische Parallelisierung :: Meine Musik |
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also manchmal versteh ich euch nicht. Als ich meine "Panzer-Physik"-Engine hochgeladen habe, meinten viele ich sollte doch lieber mit Globalen arbeiten statt mit Types, da sonst Anfänger damit nicht klar kommen würden und es auch eher für den Multiplayer gedacht sei. Jetzt sagt ihr, er solle doch mit Types arbeiten, da es für Anfänger besser geeignet sei direkt den richtigen Code zu haben.
Ganz ehrlich : Tutorials sind da, um anhand einfacher Beispiele den Stoff zu verstehen. Deshalb ist es einfach gehalten, um den Anfängern die Möglichkeit zu bieten den Code ohne spezielle Code-Sprünge wie Funktionen etc. zu lesen und zu verstehen. Wenn er jetzt direkt die "Komplett"-Lösung hier reingepostet hätte, dann würde sich jeder den Teil markieren, einmal Strg-X und Strg-V drücken und das wars. Wo bleibt da der Sinn des Tutorials ? Dann hätte er es doch eher im Codearchiv hochladen können ![]() 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! |
E. Urbachehemals "Basicprogger" |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Es ging nie um Komplettlösung oder Teillösung, sondern um qualitativ oder nicht qualitativ.
In beiden Fällen wird der Anfänger dies kopieren können, deine Argumentation ist vollkommen bodenlos. |
||
The box said, "Requires Windows XP or better", so I installed Ubuntu | Linux is NOT Windows
Flua :: Profiler für BB und BMax :: Partikel-Engine für BMax :: Lyphia-Projekt Quellcode (BMax) :: Automatische Parallelisierung :: Meine Musik |
![]() |
Dottakopf |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also ich denke:
Die Qualität eines Tutorials zeichnet sich dadurch aus, was beim wissensbedürftigen an "Wissen" zur Materie bzw. zu den Angewandten Techniken nach dem Durcharbeiten des Tutorials hängen geblieben ist. Um das zu erreichen versuche ich nur Techniken zu verwenden die der Neuling bereits versteht und er sich nur auf den Kern des Tutorials konzentrieren braucht. Natürlich darf man den User nicht für dumm verkaufen oder etwas "falsches" servieren, aber ich habe klar am beginn darauf hingewiesen das man noch weitere Techniken(Types Arrys) benötigt um es sinnvoll anzuwenden. Aber da du so sehr auf Qualität behaarst, und alles andere als erstmal falsch abstempelst, werde ich mich heute noch darum bemühen das Tutorial um einen "Fortgeschrittenen Teil" zu erweitern. Etwas Geduld. Gruß Dottakopf |
||
Rechtschreibfehler gelten der allgemeinen Belustigung! |
- Zuletzt bearbeitet von Dottakopf am Do, Apr 14, 2011 19:47, insgesamt einmal bearbeitet
feiderehemals "Decelion" |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ein Tutorial ist dann gut, wenn es der gewünschten Zielgruppe die erklärte Technik gut vermitteln kann.
Und das tut dieses Tutorial. Ich denke, dass das vielen interessierten Anfängern gut weiterhelfen kann. Außerdem transportiert es den Gedanken, sich vorher zu überlegen, was man eigentlich tun will, auch eine wichtige Sache für Anfänger (und definitiv auch für Fortgeschrittene.) Also danke ich dir einfach auch mal als nicht-Anfänger für dieses Tutorial und die somit erfolgte Bereicherung dieser Communitiy. LG Dece EDIT: Schließlich ging es bei diesem Tutorial darum, eine Tür zu implementieren. Wenn der Benutzer des Tutorials mehrere Türen implementieren will und sich damit mit Types auseinander setzen muss, wird es für ihn einfacher sein, erst die Grundidee einer Türumsetung zu kennen. |
||
![]() |
Dottakopf |
![]() Antworten mit Zitat ![]() |
---|---|---|
Danke Decelion,
das Tutorial wurde nun erweitert. Nun sollten alle Seiten zufrieden sein. Viel Erfolg damit. Gruß Dottakopf |
||
Rechtschreibfehler gelten der allgemeinen Belustigung! |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group