Anzeige

Schiff "respawnt" alle 10 sekunden

Schiff "respawnt" alle 10 sekunden | PSD-Tutorials.de

Erstellt von D0gProjects, 18.09.2010.

  1. D0gProjects

    D0gProjects kleiner Animator

    Dabei seit:
    25.03.2009
    Beiträge:
    148
    Geschlecht:
    männlich
    Schiff "respawnt" alle 10 sekunden
    Hi nochmal
    Ich komm mit einem weiteren Problem zu euch:
    Ich will so nen simplen Arcade-shooter machen, bei dem man einfach feinde abschiessen muss.
    Das klappt eigentlich schon ganz gut, das einzige Problem ist, dass das Schiff alle 10sek stecken bleibt und ein neues kommt, das alte bleibt einfach stehen (wo es ist). Wie könnte ich diesen Fehler beheben?
    Hier mein Code:
    Code (Text):
    1. var secCount:Timer = new Timer(1000);
    2. var secPassed:Number = new Number(0);
    3. var bulletholder:Sprite = new Sprite();
    4. var sp:MovieClip = new hero();
    5.  
    6. secCount.addEventListener(TimerEvent.TIMER, onSecCount);
    7. addEventListener(Event.ENTER_FRAME,onenter);
    8. stage.addEventListener(MouseEvent.CLICK,onclick);
    9.  
    10. secCount.start();
    11. addChild(bulletholder);
    12. addChild(sp);
    13.  
    14. //Feindspawn
    15. function onSecCount(e:Event)
    16. {
    17.     secPassed += 1;
    18.    
    19.     var spMine:Sprite = new mine();
    20.     spMine.x= Math.random()*600;
    21.  
    22.     addChild(spMine);
    23. }
    24.  
    25. //SchiffSteuerung
    26. function onenter(e:Event):void {
    27.     sp.x-=(sp.x-mouseX)*.1;
    28.     sp.y-=(sp.y-400)*.2;
    29.  
    30. }
    31. //Schuss
    32. function onclick(e:Event) {
    33.     if (true)
    34.     {
    35.         sp.y=405;
    36.         var bl:Sprite = new hrLaser();
    37.         bl.y=sp.y;
    38.         bl.x=sp.x;
    39.         bulletholder.addChild(bl);
    40.     }
    41.  
    42. }
    43.  
    44.  
    Achja, und noch 2 fragen:

    1. Für meine Feinde habe ich eine kleine Animation erstellt, die aber nicht abgespielt wird, sondern nur beim 1. frame stehenbleibt.
    2. Ich will, dass, wenn ein Feind mit dem Helden kollidiert, das Spiel zu Ende sein soll.

    Danke für eure super Hilfe!
    lg.
     
    #1      
  2. MyFloh

    MyFloh Picturefan

    Dabei seit:
    24.04.2010
    Beiträge:
    325
    Geschlecht:
    männlich
    Ort:
    Ammersee
    Software:
    Photoshop 7.0
    Schiff "respawnt" alle 10 sekunden
    AW: Schiff "respawnt" alle 10 sekunden

    Hallo D0gProjects,

    dieser Ausdruck ist mathematisch nicht korrekt. Was multiplizierst Du da?
    Überdenke diesen Teil nochmal. Ich glaube die Variablen nehmen ungültige Werte an, und werden dann auf NULL gesetzt.

    Und dann
    was ist die Frage??

    LG MyFloh
     
    Zuletzt bearbeitet: 19.09.2010
    #2      
  3. D0gProjects

    D0gProjects kleiner Animator

    Dabei seit:
    25.03.2009
    Beiträge:
    148
    Geschlecht:
    männlich
    Schiff "respawnt" alle 10 sekunden
    AW: Schiff "respawnt" alle 10 sekunden

    Also für mich schaut der code ganz ok aus und veränderungen haben nix gebracht.
    Gibt es in Flash eine möglichkeit zu debuggen? Wär sehr hilfreich!

    Zu meinen Fragen:
    1. Wie kann ich meinen code verändern, sodass alle movieclips loopen anstatt am 1. frame stehen zu bleiben?
    2. Ich bräuchte einen Kollisionsevent wenn der Held mit feinden zusammenstosst. "hitTestObject" hat nicht funktioniert.
     
    #3      
  4. ti8shbi

    ti8shbi Allround

    Dabei seit:
    25.08.2007
    Beiträge:
    294
    Geschlecht:
    männlich
    Ort:
    Wien
    Software:
    Photoshop, After Effects, Flex, C4D, Eclipse (Aptana Studio)
    Kameratyp:
    Digicam Kodak Easyshare C663
    Schiff "respawnt" alle 10 sekunden
    AW: Schiff "respawnt" alle 10 sekunden

    Das Problem ist, dass die Feinde eben immer dieselbe Instanzierung haben.... also ich würde einfach das spMine in ein globales Array reinstecken.

    Der Hittest muss dann wohl händisch gemacht werden... die Funktionsweise

    beim onEnterFrame eine Funktion z.B. "checkHitTest" machen
    Code (Text):
    1.  
    2.  function checkHitTest():void{
    3.   var crashed:Number = 0;
    4.   for (var i:Number=0; i < spMine.length; i++){
    5.      if (sp.x >= spMine[i].x && sp.x <=  spMine[i].x+spMine[i].width && sp.y >= spMine[i].y &&  sp.y <= spMine[i].y+spMine[i].width){
    6.       crashed = 1;
    7.       break;
    8.     }
    9.   }
    10.  
    11.   if (crashed == 1){
    12.     gameOver();
    13.   }
    14.  }
    15.  
    Hoffe, das hilft...

    Debuggen in Flash, genau wie auch in Flex oder Flashbuilder mit

    trace (variablenName);

    und ich bin mir jetzt nicht sicher, aber ich glaube, dass du die Movieclips starten kannst, indem du
    movieclip.play();
     
    Zuletzt bearbeitet: 20.09.2010
    #4      
x
×
×