Zurück   Flashforum > Flash > ActionScript > Spielkonzepte und Spieleprogrammierung

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 22-12-2007, 06:40   #1 (permalink)
Neuer User
 
Registriert seit: Oct 2001
Beiträge: 166
hero auf shape laufen lassen?

Hallo Zusammen,

ich weiss leider nicht weiter.
Also ich habe einen Hero der mit einem Keylistener gesteuert wird (rechts, links, jumpUp) Die Spielfigur hat eine Gravitation (Schwerkraft) von 3.
und ein Flag mit falling = true; Das bedeutet ja er fällt zuerst immer runter.
Jetzt hab ich Plattformen erstellt und den Hero folgendermassen abgefangen, damit er darauf laufen kann.

PHP-Code:
for (var 1i<=100i++) {
                
                var 
plattform:MovieClip currentLevelMovieClip["plattform_"+i];
                
//trace("plattform= "+plattform);
                
                
if (plattform != undefined) {
                
                    if (
this.hitbereich_unten.hitTest(plattform)) {
                        
// Steht auf einer Plattform. Daher kein Fallen und
                    
                        
Game.mFalling false;
                        
Game.mYSpeed 0;
                        
                        
// y-Position korrigieren
                        
this._y plattform._y;
                        
                        
                        
                        
                        
// Hero springt nicht mehr...darf wieder springen
                        
Game.mHeroJumpsUP false;
                        
Game.mEnableButtRight true;
                        
Game.mEnableButtLeft true;
                        
                        
                        
                        break;
                    } else {
                        
// Scheinbar noch kein Halt
                        
Game.mFalling true;
                        
Game.mHeroJumpsUP true;
                        
                    }
}


das funktioniert tadellos.....

jetzt möchte ich aber einen groundClip anlegen der aus einem shape besteht (kein rechteckiger movieClip) und ich mache den hittest folgendermassen:

PHP-Code:
var xHeroAbsolute HelpFunctions.getAbsoluteCoordinateValue(this"X");
var 
yHeroAbsolute HelpFunctions.getAbsoluteCoordinateValue(this"Y");
            
            
            if (
currentLevelMovieClip.groundClip.hitTest(xHeroAbsoluteyHeroAbsolutetrue)) 
            {
                
trace("jepppppp hittest funzt");
    
//Was muss hier rein, so das der held immer auf dem shape oben bleibt?????            


//Game.mFalling = false;
                
                // y-Position korrigieren ???? so hab ichs probiert...dann wird er immer wieder hochgeschubst und sieht nicht gut au
                //this._y -= 20;
                
                //Game.mGravity = 0;
                //Game.mHeroJumpsUP = false;
                
                //trace("this._y ="+this._y);
                
            
} else {
                
//Game.mFalling = true;
                //Game.mGravity = 3;
            

so der hittest funzt gut.. hole mir vorher mit einer helperClasse die Original Koordinaten von dem Hero, denn der liegt nicht auf _root.

Das ganze liegt natürlich noch in einem Enterframe, der auf dem hero liegt.

Meine Frage ist jetzt wie kann ich es machen das der Hero immer entlang dem shape läuft, also auch berge und hügel überläuft.

Über eine Antwort wäre ich dankbar.

Geändert von mikolo (22-12-2007 um 06:44 Uhr)
mikolo ist offline   Mit Zitat antworten
Alt 22-12-2007, 13:29   #2 (permalink)
Neuer User
 
Benutzerbild von _crypto_
 
Registriert seit: Mar 2006
Beiträge: 1.573
ActionScript:
  1. var gravitation : Number = 0;
  2. var hero : MovieClip = _root.hero;
  3. var ground : MovieClip = _root.shape;
  4.  
  5. this.onEnterFrame = function() : Void
  6. {
  7.     gravitation++;
  8.     hero._y += gravitation;
  9.  
  10.     while( ground.hitTest( hero._x, hero._y, true ) )
  11.     {
  12.         gravitation = 0;
  13.         hero._y--;
  14.     }
  15.  
  16.     if( Key.isDown( // ...
  17. }
__________________

Currently working on:

- --- ---

-----------------------------------------------------------------
ActionScript 3.0, C++, Java, Delphi
_crypto_ ist offline   Mit Zitat antworten
Alt 23-12-2007, 11:44   #3 (permalink)
Neuer User
 
Registriert seit: Oct 2001
Beiträge: 166
vielen dank

danke dein beispiel funktioniert.... aber bei mir im game stürzt flash noch immer ab. Aber ich galube das bekomme ich jetzt hin.

Vielen Dank
mikolo ist offline   Mit Zitat antworten
Alt 25-12-2007, 22:09   #4 (permalink)
Neuer User
 
Registriert seit: Oct 2001
Beiträge: 166
oder auch nicht :-((

Hallo _crypto_,

jetzt hab ich ein neues problem. Ich möchte den groundClip in einem level MovieClip der gescrollt wird packen.

d.h. ich habe einen hauptlevel container in dem liegt der groundclip und der hero. Der hero soll auf dem groundClip (shape) laufen. Der gesamte hauptlevelcontainer scrollt sich je nach hero position.

Ich benötige doch die tatsächliche Pos vom hero, oder?
Wenn ich nur die absolute X Koordinate vom hero hole geht es.
Sobald ich aber die absolute Y Koordinate beim hitest mit angebe stürzt Flash ab? Hast du noch eine Idee?

Her das Script, was immer abstürzt:
PHP-Code:

ground 
currentLevelMovieClip.groundClip;
hero currentLevelMovieClip.hero_mc;

currentLevelMovieClip.hero_mc.onEnterFrame = function() {
    
    
Game.mGravity++;
    
hero._y += Game.mGravity;
    
    var 
heropoint:Object = new Object();
        
heropoint.currentLevelMovieClip.hero_mc._x;
        
heropoint.currentLevelMovieClip.hero_mc._y;
        
    
// Rechnet diesen um in das root-Koordinatensystem
    
currentLevelMovieClip.localToGlobal(heropoint);
    
    var 
xHeroAbsolute heropoint.x;
    var 
yHeroAbsolute heropoint.y;
    
    
    while (
ground.hitTest(xHeroAbsoluteyHeroAbsolutetrue)) 
    {
      
        
hero._y--;
        
        
Game.mGravity 0;
    
    }
        
 
    if (
Key.isDown(Key.RIGHT)) {
        
hero._x += 10;
    } else if (
Key.isDown(Key.LEFT)) {
        
hero._x -= 10;
    }

Über Hilfe würd ich mich sehr freuen.

LG mikolo
mikolo ist offline   Mit Zitat antworten
Alt 25-12-2007, 23:32   #5 (permalink)
Neuer User
 
Benutzerbild von _crypto_
 
Registriert seit: Mar 2006
Beiträge: 1.573
hmm ka jetz meine aber das man das dann mit localToGlobal
und globalToLocal machen muss... bin aber nicht sicher!
ich mach das meißtens eh nur noch über klassen und so deswegen
sowas mit clip in clip und so gibbet es nichmehr bei mir

trouzdem viel erfolg

oh hab ncih gesehn das du das schon so hast...
und was is wenn dus eifnach intern machst? also die x und y position vom ground
und dem hero gehen ja von dem container aus also dürfte das doch auhc ohne das umrechnen gehen?
__________________

Currently working on:

- --- ---

-----------------------------------------------------------------
ActionScript 3.0, C++, Java, Delphi

Geändert von _crypto_ (25-12-2007 um 23:36 Uhr)
_crypto_ ist offline   Mit Zitat antworten
Alt 26-12-2007, 14:25   #6 (permalink)
Neuer User
 
Registriert seit: Oct 2001
Beiträge: 166
ja genau das ist das problem

Zitat:
Zitat von _crypto_ Beitrag anzeigen
und was is wenn dus eifnach intern machst? also die x und y position vom ground
und dem hero gehen ja von dem container aus also dürfte das doch auhc ohne das umrechnen gehen?
genau das ist das problem es geht eben nicht wenn ich es im container mache, wo beide drinn liegen. (Ob mit oder ohne umrechnen) Keinen Plan mehr? Es funktioniert nur auf _root? Das kann doch nicht sein! So lange hab ich noch nie an einem Problem rumgebastelt. Kannst du es nicht auch mal testen. Ich mache das übrigens auch in Klassen....

LG und hoffentlich hattest du schöne Weihnachten? :-)
mikolo ist offline   Mit Zitat antworten
Alt 26-12-2007, 14:51   #7 (permalink)
Neuer User
 
Registriert seit: Oct 2001
Beiträge: 166
hab glaube ich den fehler endlich entdeckt

poste es wenn sicher, danke!

liebe grüße
mikolo
mikolo ist offline   Mit Zitat antworten
Alt 04-01-2008, 09:42   #8 (permalink)
Neuer User
 
Registriert seit: Oct 2001
Beiträge: 166
war wirklich nur ein koordinaten problem

also hier wie versprochen nochmal die lösung meines problems.

Wenn man einen hero auf einem shape laufen lassen will mit schwerkraft, dann immer nur auf die koordinaten achten. Am besten jeden Container (falls verschachtelung notwendig) immer auf x,y null setzen. Dann funktioniert es auch mit dem hittest (shape flag auf true!!!).
Bei mir war das ganze einfach ein bisschen unübersichtlich geworden, da der levelcontainer noch gescrollt wurde etc.

Hoffe das Thema hat anderen auch geholfen :-)

Danke
lg mikolo
mikolo ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 18:17 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele