| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Neuer User Registriert seit: Aug 2003 Ort: Bayern
Beiträge: 120
| swapDepths - Für Profis - ich kriegs nicht hin
ich habe eine Spielfigur die ich auf der Bühne nach vorne und nach hinten bewegen kann. Nun möchte ich, das die Spielfigur sich auch hinter Gegenständen bewegen kann bzw. das wenn die figur von vorne auf den Gegenstand zuläuft nichts passiert. Mein Problem ist das ich nicht weis wie ich die funktion schreiben muss, damit die Movieclips die Vor der Spielfigur stehen richtig stehen (nämlich hintereinander) und wie ich die tiefe jeweils zuweise, da ja der Gegenstand den ich zuerst passiert habe auch immer vorne stehen muss und die anderen dann ja jeweils dahinter. Wenn ich mir immer die Eigenschaft von meiner Spielfigur hole, dann habe ich nämlich nicht die richtige Anordnung meiner Gegenstände da sich der zuletzt geswapte Gegenstand dann in den Vordergrund stellt. Mein Ansatz sieht so aus: mc_vorne =[]; man= man.getDepth(); function checkDepts(){ myArray= [mc1, mc2,mc3,mc4,mc5,mc6] for(i=0;i<myArray.length;i++){ if(man.swapCheck._y <= myArray[i]._y){ mc_vorne = myArray[i]; mc_vorne[i].swapDepths(weis nicht); } } } Ich checke ab bei welchem Gegenstand (myArray[i]) die y-Koordinate von man höher liegt und speicher diese dann in ein neues leeres Array (mc_vorne). Anschliessend hatte ich vor dem neuen Array mc_vorne die neuen tiefen zuzuweisen. Weis allerdings nicht ob das dann auch so klappt da das ganze ja auch umgekehrt funktionieren soll. Desweiteren, weis ich nicht wie ich ich den Rest hoch bzw. runterzählen soll. Ich denke es gibt vielleicht noch eine einfachere Variante, bin für jeden Tip dankbar. P.S. hab mir die Beiträge zu swapDepths, iso-tiefe, etc. schon angeschaut war aber nix spezielles für tiefentausch bei z-Bewegung dabei. Ist jetzt grad ein bissl viel aber vielleicht kann mir ja jemand helfen oder einen Ansatz geben. Danke
__________________ Danke an alle Beteiligten ... |
| | |
| | #2 (permalink) |
| Level up Registriert seit: Jun 2001 Ort: Bocholt
Beiträge: 4.155
|
nicht so kompliziert.... Du brauchst ja nach Deiner Erklärung keinen wirklichen Tiefentausch, Du musst Deiner Spielfigur nur eine eindeutige Tiefe geben, die keines der Objekte genau haben kann, also als erstes setzt Du die Tiefen der mc's und zwar in Zehnerschritten etwa so: ActionScript:
ActionScript:
Alois
__________________ -Spuckt mir auf den Stuhl, ich will im Grünen sitzen- Geändert von Alois (13-08-2003 um 18:14 Uhr) |
| | |
| | #3 (permalink) |
| Farbe ist Luxus Registriert seit: May 2003 Ort: Köln
Beiträge: 2.405
|
HI, hmm, bewegen sich denn deine Gegenstände ebenfalls, oder stehen die nur in der Gegend rum? Wenn sie nur stehen, verteile sie am besten auf levels mit Abständen von - sagen wir - 10 Ebenen. Diese Werte kannst du auch in einem Array speichern. Wenn du dich in y-Richtung einem Objekt näherst, prüfst du ja, ob sich die Figur davor oder dahinter befinden soll. Wenn ja, hol dir die Tiefe des Objekts aus dem Array, zieh eins ab und weise diesen Wert der Figur zu. Wenn sich mehrere Objekte gleichzeitig bewegen, könntest du wie folgt vorgehen: Definiere je nach y-Wert einen Level-Bereich, also Bereich gleicher Tiefe. Du kannst es auch für jeden Pixel machen. Sagen wir also, deine y-Werte reichen von 0 - 400 und du hast zehn Objekte, die auch gleichzeitig auf der gleichen Höhe sein können, dann benötigst du 4000 mögliche Level. Jedes Objekt prüft onEnterFrame sein y und gibt sich ggf. einen neuen Level. Damit die Teile sich nicht gegenseitig kicken, benötigst du wieder ein Array, in dem der Level jedes Objekts gespeichert ist. Ich hoffe, ich hab dich richtig verstanden (und du hast mich auch verstanden )Grüße Sascha
__________________ 12:15, press return |
| | |
| | #4 (permalink) |
| Neuer User Registriert seit: Aug 2003 Ort: Bayern
Beiträge: 120
|
@alois ich möchte die Figur nach vorne und nach hinten bewegen, daher benötige ich meiner Meinung eben schon eine Tiefenänderung da die Gegenstände ja nach vorne scaliert werden und die Figur nach hinten.
__________________ Danke an alle Beteiligten ... |
| | |
| | #5 (permalink) |
| Level up Registriert seit: Jun 2001 Ort: Bocholt
Beiträge: 4.155
|
Tiefenänderung: ja Tiefentausch: nein Mein script ist absolut nur Tiefenänderung und könnte natürlich auch in einem clipEvent stehen... Gruß Alois
__________________ -Spuckt mir auf den Stuhl, ich will im Grünen sitzen- |
| | |
| | #6 (permalink) |
| Level up Registriert seit: Jun 2001 Ort: Bocholt
Beiträge: 4.155
|
Ok, ich hab hier auf die Schnelle mal ein script erstellt, was wahrscheinlich genau das machct, was Du willst: ActionScript:
Gruß Alois
__________________ -Spuckt mir auf den Stuhl, ich will im Grünen sitzen- |
| | |
| | #8 (permalink) |
| Neuer User Registriert seit: Aug 2003 Ort: Bayern
Beiträge: 120
|
Hallo Alois, war schon inetwa das was ich machen wollte, nur das ich eben nur die Figur mit meiner Tastatur bewegen wollte und der Rest wird nur in Abhängigkeit nach vorne oder nach hinten bewegt / scaliert um einen Tiefeneffekt zu erzielen. Weis nicht ob Du noch lust hast, da die Sache ja eigentlich mein Problem ist. (Bin auch noch dran). Hab Dir trotzdem mal ein Beispiel angehängt damit Du siehst wie ich es mir vorgestellt habe. Ist ne einfache Tweening-Ani, deshalb wechselt die Figur die Tiefe nicht. Sollte am Ende eben so sein, das die Figur die Tiefe wechselt wie das DragObjekt in Deinem MC. Die Objekte sollen nicht dragbar sein. Nur die Figur lässt sich über UP/Down steuern. Vielen Dank
__________________ Danke an alle Beteiligten ... |
| | |
| | #9 (permalink) |
| Neuer User Registriert seit: Aug 2003 Ort: Bayern
Beiträge: 120
|
@alois Hab´die Tiefen-Abfrage jetzt mal in eine Funktion gepackt und den Wert des Movies "this["mc"+i] auf den festen Wert von meinem MC man gelegt. Dennoch funktioniert es nicht ... function checkDepths(){ myArray = [man,mc1,mc2,mc3,mc4, etc...]; man.onEnterFrame=function(){ man.swapDepths(Math.floor(myArray[i]._y) *10+man.getDepth()); } } In myArray sind die MovieClips die vorhanden sind. Den MovieClips in meinem Array werden am Anfang die Tiefen 100,99,98,97 etc... zugewiesen
__________________ Danke an alle Beteiligten ... Geändert von drive68 (14-08-2003 um 14:19 Uhr) |
| | |
| | #11 (permalink) |
| Neuer User Registriert seit: Aug 2003 Ort: Bayern
Beiträge: 120
|
So - nun habe ich das Script fast so wie ich es brauche: for(i=1;i<10;i++){ ziel = attachMovie ("mc","mc"+i,i); myColor = new Color(mc1); myColor.setRGB(0xff9933); ziel.onEnterFrame=function(){ keyCheck(); this.swapDepths(Math.floor(this._y)*10+this.i); } } function keyCheck(){ if (Key.isDown(Key.DOWN)){ mc1._y+= 1; mc1._x = +10; } else if(Key.isDown(Key.UP)){ mc1._y-= 1; } } Mein Problem ist nun, das ich in den Movie Ziel mehrere unterschiedliche MovieClips attachen will und die For-Schleife Rausnehmen will. Ist das Möglich und funktioniert der Rest dann auch noch so wie ich es will?
__________________ Danke an alle Beteiligten ... |
| | |
| | #13 (permalink) |
| Level up Registriert seit: Jun 2001 Ort: Bocholt
Beiträge: 4.155
|
Na jetzt weiss ich natürlich immer noch nicht was Du willst, deine geposteten swf's sind ja auch nicht grad Erleuchtung, die scripts die Du postest sind nicht sehr sauber (Du brauchst nicht zehnmal die Farbe von mc1 zu setzen und in allen zehn mc's den keyDown per enterFrame abragen ist ja performancebremse pur) wenn Du die Tiefe nur bei Tastendruck abfragen willst, bist Du natürlich mit listenern statt onEnterFrames besser bedient: ActionScript:
Gruß Alois
__________________ -Spuckt mir auf den Stuhl, ich will im Grünen sitzen- Geändert von Alois (16-08-2003 um 01:13 Uhr) |
| | |
| | #14 (permalink) |
| Neuer User Registriert seit: Aug 2003 Ort: Bayern
Beiträge: 120
|
Hab jetzt nochmal eine Demo-Fla angefertigt um das ganze ein wenig plastischer zu machen. Ich hoffe das ich es jetzt richtig erklärt habe. Vielen Dank für die Mühe.
__________________ Danke an alle Beteiligten ... |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |