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

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 18-09-2007, 21:18   #1 (permalink)
Neuer User
 
Benutzerbild von _crypto_
 
Registriert seit: Mar 2006
Beiträge: 1.573
Brauche Hilfe beim Umsetzen eines Spielkonzeptes

Also das Konzept lautet so:

Man ist ein kleines Männchen und rent um Planeten rum. So wenn man jetzt mal dolle
abspringt, dann kann es sein das der nähere gelegende Planete bzw. Planeten einen
stärker anziehen.

Soweit kein Problem, dass mit dem Anziehen dank hgseib
Nur meine Problem ist, wie setze ich es um, dass man von einem zu einem anderen
Planeten springen kann. Das größte Problem macht mir die Rotation, denn die bestimmt
ja, in welche Richtung die Figur fliegt und der Abprupte Wechsel der Rotation sieht
nicht sehr schön aus

Das Skript für die Anziehung + Rumlaufen wäre dieses:
ActionScript:
  1. onEnterFrame = function():Void
  2. {   
  3.     var dx:Number = Planet._x - Figure._x;
  4.     var dy:Number = Planet._y - Figure._y;
  5.     var d :Number = Math.sqrt(dx * dx + dy * dy);
  6.    
  7.     var r :Number = Planet._width / 2;
  8.     var w :Number = Math.atan2(dy, dx);
  9.     var Fg:Number = (r * r) / d / 4;
  10.        
  11.     if((d - Fg) > r) {
  12.         Figure._x += Fg * Math.cos(w);
  13.         Figure._y += Fg * Math.sin(w);
  14.     }
  15.     else {
  16.         if(Key.isDown(Key.LEFT))  w -= 0.05;
  17.         if(Key.isDown(Key.RIGHT)) w += 0.05;
  18.        
  19.         Figure._x = Planet._x - r * Math.cos(w);
  20.         Figure._y = Planet._y - r * Math.sin(w);
  21.     }
  22.    
  23.     Figure._rotation = (w - Math.PI / 2) * 180 / Math.PI;
  24. };

So weiteres habe ich noch nicht.
Wie stelle ich das jetzt am geschicktesten an, wenn man mehrere Planeten unterschiedlicher Größe hat?

Ich habe daran gedacht alle Planeten in einen Array zu speichern, dann zu überprüfen welcher die Figur am stärksten anzieht im Momment und dann in diese Richtung zu fliegen.

Alles kein Problem aber eben der abrupte Wechsel der Rotation sobald eine anderer
Planet stärker anzieht ...

und was anderes, wie schaffe ich es, dass ich durch drücken nach oben die figur springen lassen soll???
also ich hab vieles probiert aber da die figur ja kontinuierlich angezogen wird...

es soll ja schon realsistisch sein, das der flug beim laufen dann auch zur parabel wird
Angehängte Dateien
Dateityp: rar ActionScript.rar (6,7 KB, 5x aufgerufen)
__________________

Currently working on:

- --- ---

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

Geändert von _crypto_ (18-09-2007 um 21:20 Uhr)
_crypto_ ist offline   Mit Zitat antworten
Alt 20-09-2007, 18:30   #2 (permalink)
wau
 
Benutzerbild von Circushund
 
Registriert seit: Jan 2006
Ort: Hamburch
Beiträge: 404
hi crypto,
willst du das in etwa so machen wie bei tonypas
Geartaker?
http://www.tonypa.pri.ee/tbw/index.html
..dann könnte man das ja einfach trigonometrisch lösen oder?
__________________
Say no to Internet Explorer 6!
Circushund ist offline   Mit Zitat antworten
Alt 21-09-2007, 15:09   #3 (permalink)
Neuer User
 
Benutzerbild von _crypto_
 
Registriert seit: Mar 2006
Beiträge: 1.573
nein das geartaker wär kein problem,

hier geht es aber auch um anziehung unter körpern

ich habe mehrere planete sagen wir mal, und die ziehen den held an.
so kurz bevor er den rand des planeten erreichts, praktisch seinen orbit grob gesagt,
dreht er sich mit den füßen nach unten richtung planet. nun kann man mit links und
rehcts eben um den planeten rumrennen.

soweit hab ichs. was mir fehlt ist eben, das ich durch drücken nach oben springen möchte, und dies soll wenn möglich dann beim laufen um den planeten korrekt aussehen, sprich eben parabelförmig und das bekomm ich nicht hin.

später soll man dann vom planeten wegspringen können, und wenn in der nähe ein planet dann einen anzieht fliegt er ja autpmatisch dahin und so kann man von planet zu planet etc.
__________________

Currently working on:

- --- ---

-----------------------------------------------------------------
ActionScript 3.0, C++, Java, Delphi
_crypto_ ist offline   Mit Zitat antworten
Alt 21-09-2007, 15:59   #4 (permalink)
wau
 
Benutzerbild von Circushund
 
Registriert seit: Jan 2006
Ort: Hamburch
Beiträge: 404
hi crypto,

ich hab mal eine kleine skizze gemacht


..na vll verstehst du ja was (ist nur ne grober Brainstorm)was mir grad durch den Kopf ging. Ich glaub es ginge evtl. mit einer Matritzendrehung um den Ursprung des Kreises. Die Parabel ,die entsteht wenn das Männchen oder dein Klotz hochspringt, musst du auch um diesen winkel+ein bisschen mehr(weiss grad nicht?) drehen.

Wie das allerdings dann mit der Gravitation und Anziehung vom fremden Planeten aussieht, weiss ich jetzt nicht, vielleicht geht es, wenn man den Ursprung dann immer auf den jeweiligen Planeten setz..?
__________________
Say no to Internet Explorer 6!
Circushund ist offline   Mit Zitat antworten
Alt 22-09-2007, 17:06   #5 (permalink)
Neuer User
 
Benutzerbild von _crypto_
 
Registriert seit: Mar 2006
Beiträge: 1.573
boar krass

ne "skizze", wenn ich so malen könnt

werds mir mal anschauen hab ja ferien und genug zeit zum nachdenken.
habe auhc schon einige ideen im kopf, werde ich morgen mal ausprobieren
doch jetz erstmal: saufen

könntest dus mir vllt nochmal etwas größer schicken?
der utnere linke teil ist so eng.

-> timon_gev[at]yahoo.de

vielen dank schonmla dafür.
__________________

Currently working on:

- --- ---

-----------------------------------------------------------------
ActionScript 3.0, C++, Java, Delphi
_crypto_ ist offline   Mit Zitat antworten
Alt 14-10-2007, 21:15   #6 (permalink)
Neuer User
 
Benutzerbild von _crypto_
 
Registriert seit: Mar 2006
Beiträge: 1.573
okay soweit bin ich mittlerweile (ja ich hab nicht jeden tag dran gearbeitet )
aber ich hab ein kleines problem mit der rotation der figur:

ActionScript:
  1. var dx : Number = (this._x + UNIVERSE._x) - BODY._x;
  2. var dy : Number = (this._y + UNIVERSE._y) - BODY._y;
  3. var d  : Number = Math.sqrt(dx * dx + dy * dy);
  4. var r  : Number = this._width / 2;
  5. var w  : Number = Math.atan2(dy, dx);
  6.            
  7. // ...
  8.            
  9. if((d - this.FORCE) < (r + 60))
  10. {
  11.     this._parent._parent.POINT = this;
  12.     BODY._rotation += ((w - Math.PI / 2) * 180 / Math.PI - BODY._rotation) / 5;
  13. }
so kurz gesagt:
die figur dreht sich zum planeten hin, sobal dieser in einem umkreis von
60 pixel am planeten dran ist. läuft alles auch perfekt nur beim absprigen
vom planeten geschieht in der unteren rechten ecke eben dieser komische
"rotationsbug"

die figur wirbelt wilt herum...

anzusehen: Klick it!

Anleitung:

- links / rechts um den planeten rumgehen
- hoch zum srpingen
__________________

Currently working on:

- --- ---

-----------------------------------------------------------------
ActionScript 3.0, C++, Java, Delphi
_crypto_ ist offline   Mit Zitat antworten
Alt 14-10-2007, 22:49   #7 (permalink)
muh
 
Benutzerbild von Janoscharlipp
 
Registriert seit: Apr 2002
Ort: Freiburg / Stuttgart
Beiträge: 4.338
Sieht so aus, als hättest du noch ein bissel Probleme damit, dass du nicht so ohne Weiteres mit Winkeln rechnen kannst, wie mit Zahlen. Du kommst nicht unbedingt von Winkel a zu Winkel b indem du (b - a) Winkelmaß zurücklegst, denn das ganze ist ja ein Kreis ..
Da kram ich mal ne uralte Funktion von mir aus, ich meine die hätten wir auch mal hier im Forum zusammen gebastelt, finde es aber nicht mehr:
PHP-Code:
_global.getAngleDifference = function(a:Number,b:Number)
{
    
/*
    gibt den kleineren orientierten Winkel (a,b) zurück
    */
    
var d:Number a;
    if(
180)
    {
        return ((
180) % 360 ) - 180;
    }
    else if(
< -180)
    {
        return ((
180) % 360 ) + 180;
    }
    else
    {
        return 
360;
    }
}; 
__________________
»Carpe diem«, sagte der Graf. (Terry Pratchett: Ruhig Blut!)
Janoscharlipp ist offline   Mit Zitat antworten
Alt 14-10-2007, 23:47   #8 (permalink)
wau
 
Benutzerbild von Circushund
 
Registriert seit: Jan 2006
Ort: Hamburch
Beiträge: 404
Zitat:
Du kommst nicht unbedingt von Winkel a zu Winkel b indem du (b - a) Winkelmaß zurücklegst, denn das ganze ist ja ein Kreis ..
..jup, der Winkel muss im Bereich 0-360° sein.

in was für einen Wertebereich ist denn dein Winkel
Code:
var w  : Number = Math.atan2(dy, dx);
..ist das eher -180° bis 180° oder 0-360°?
Bzw. wird der Winkel ja im Bogenmass ausgegenben dh. -PI bis +PI bzw. 0 bis 2xPI ?
(weiss jetzt nicht was, hab die Funktion noch nicht benutzt)

Ps:
Ich mach mir zum Umrechnen der Winkel immer eine zwei Konstanten(Variablen):
Code:
var rads:Number = Math.PI/180;
var degs:Number = 180/Math.PI;
//Bspl:
mySinus=Math.sin(meinWinkelInGrad*rads)
__________________
Say no to Internet Explorer 6!

Geändert von Circushund (14-10-2007 um 23:50 Uhr)
Circushund ist offline   Mit Zitat antworten
Alt 15-10-2007, 03:05   #9 (permalink)
x39
 
Benutzerbild von georgem
 
Registriert seit: Oct 2004
Ort: St.Gallen, Schweiz
Beiträge: 1.261
wow, das ist ne echt geniale Spiel-Idee
__________________
The Sleeper Must Awaken

www.margaris.de | www.exosolar.net
georgem ist offline   Mit Zitat antworten
Alt 15-10-2007, 07:47   #10 (permalink)
Knopfmaler
 
Benutzerbild von Aerks
 
Registriert seit: Nov 2004
Ort: Essen
Beiträge: 227
Das hört sich doch an wie...

http://www.nitrome.com/games/spacehopper/index.php

Ist wirklich ein saucooles Konzept und von nitrome auch seht schnuckelig in Szene gesetzt.

Viele Gruesse
=:] Aerks
__________________
______________________________________________
www.rgblaster.de
Aerks ist offline   Mit Zitat antworten
Alt 15-10-2007, 07:55   #11 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.147
Ich dachte gleich an: Link
Omega Psi ist offline   Mit Zitat antworten
Alt 15-10-2007, 09:31   #12 (permalink)
muh
 
Benutzerbild von Janoscharlipp
 
Registriert seit: Apr 2002
Ort: Freiburg / Stuttgart
Beiträge: 4.338
Der Rückgabewert liegt im Bereich von -180 bis +180 und repräsentiert den kleineren Differenzwinkel um von a nach b zu kommen.
__________________
»Carpe diem«, sagte der Graf. (Terry Pratchett: Ruhig Blut!)
Janoscharlipp ist offline   Mit Zitat antworten
Alt 16-10-2007, 20:18   #13 (permalink)
Neuer User
 
Benutzerbild von _crypto_
 
Registriert seit: Mar 2006
Beiträge: 1.573
so viel posts ... dabei war ich nur n tag skaten
also:

@Janoscharlipp
wer die funktion mal testen danke dafür

@Circushund
also ich hatte shcon sinus udn all den kram cih kann damit umgehen.
hab damit auhc nie probleme gehabt. die formel selbst, dabei hat mir hgseib mein ich geholfen.

Math.atan2() liefert den winkel zwischen 2 puntken zurück. den brauch ich ja, damit
ich die rotation der figur in richtung planeten drehen kann, ok

@Aerks und Omega
ich wust nich das es sowas schon gibt...mist ^^
und ich hab mcih auch an super mario galaxy orientiert, hast es erfasst
mich hat das iwie angetan das konzept. das mario game werdsch mir auf jedenfall
hohlen ^^
__________________

Currently working on:

- --- ---

-----------------------------------------------------------------
ActionScript 3.0, C++, Java, Delphi
_crypto_ ist offline   Mit Zitat antworten
Alt 16-10-2007, 21:28   #14 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.147
Yo, das Game wird super!
Omega Psi ist offline   Mit Zitat antworten
Alt 16-10-2007, 22:30   #15 (permalink)
Neuer User
 
Benutzerbild von _crypto_
 
Registriert seit: Mar 2006
Beiträge: 1.573
so hab mal kleine veränderung vorgenommen.
man befindet sich nun immer mi mittelpunkt, sprich die "kamera"
slidet immer so das man immittelpunkt steht und nciht außerhalb des bildschirm springen/gehen kann.

ich habe mittlerweile rausgefunden, dass es heirdran liegt:
ActionScript:
  1. BODY._rotation += (((w - Math.PI / 2) * 180 / Math.PI) - BODY._rotation) / 5;
ich hab es nun einfach = gesetzt, dass die rotartion diretk zum planeten ist.
es liegt irgendwie an der berechnung

noch was schwieriges:
ich würde gerne die sterne realtiv zum Raum bewegen lassen.

-50 x Sterne = xMin Universum
-50 y Sterne = yMin Universum

Stage.width + 50 = xMax Universum
Stage.height + 50 = yMax Universum

das ist was mit prozentrechnugn udn 3satz denk ich aber ich tüffelt da den abend schon dran. wenn sich das universum bewegt müssen sich die sterne eben bewegen aber so das sie bei -50 x sind, wenn das universum bei seinem xMin ist.

aber das nur nebenbei schaff ich eventuell noch selber das mit dem winkel ist eigentlich mein hauptproblem
__________________

Currently working on:

- --- ---

-----------------------------------------------------------------
ActionScript 3.0, C++, Java, Delphi
_crypto_ 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:12 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele