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

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 11-05-2011, 16:10   #1 (permalink)
skylla
 
Benutzerbild von szylla
 
Registriert seit: Feb 2011
Beiträge: 166
sprung

hallo flashforum user,

ich hab eine aufgabe gestellt bekommen und überlege grad welches die beste lösung sein könnte.
ich habe eine spielfigur die nach rechts rennt. der user bestimmt indem er abwechselnd zwei tasten drückt wie schnell die figur rennt. jetzt erreicht die figur irgentwann das ziel, oder besser gesagt eine absprungmarke. jetzt drückt der user die leertaste und bestimmt einen winkel für den absprung, lässt er die leertaste los wird der aktuelle winkel ausgewählt und die spielfigur soll springen.
genau hier stell ich mir grad die frage wie ich diesen sprung realisieren könnte. ich hab den speed der figur mit dem die rennt und einen winkel.

siehe dazu die grafik:

der winkel wär dann zwischen 0° und 90° bzw. zwischen 0° und -270°.

wie errechne ich denn jetzt aus dem speed und dem winkel einen schönen sprung? da muss ja auch noch eine gravity mit rein damit die figur nicht zum mond fliegt, sondern auch wieder runter kommt und auf dem boden landet.
geh ich da mit vektoren an die sache? und wenn ja wie? bzw wie bezieh ich denn dabei noch die gravity mit ein? bin auch mit vektoren allein noch nicht super fit, oder anders gesagt hab ich das auch nocht nicht so ganz durchschaut.

da legt man zu begin einmalig die richtung fest?
PHP-Code:
figur.vx Math.cosdegreesToRadians45 ) ) * 0.15;
figur.vy Math.sindegreesToRadians45 ) ) * 0.15
hier wäre der winkel 45 grad. den rechne ich dann von degrees schon in radians um. hab dann noch wo gesehen das dann mit speed, in diesem fall 0.15 multipliziert wird. wobei dieser wer für mich qutsch wär. bei mir wird eher ein speed von 20, bzw 30 erreicht werden können.
später kann dann in einer enterFrame schleife gesagt werden:
PHP-Code:
figur.vx *= figur.friction;
figur.vy *= figur.friction
und dann:
PHP-Code:
figur.+= figur.vx;
figur.+= figur.vy
aber das hab ich mir jetzt nur zusammen gesponnen. falls mit vektoren gearbeitet werden sollte bitte ich um eine genaue erklärung wie das auszusehen hat und wie ich da noch eine gravity mit rein bekomme. und falls vektoren hier doof sein sollten, was gibts für alternativen?

vielen dank,
euer szylla

edit. vor dem sprung wird die figur einfach über den speed bewegt. also figur.x += speed. wobei der speed wie gesagt vom spieler bestimmt wird.

Geändert von szylla (11-05-2011 um 16:20 Uhr)
szylla ist offline   Mit Zitat antworten
Alt 11-05-2011, 16:41   #2 (permalink)
Flash-Designer
 
Benutzerbild von Martin Kraft
 
Registriert seit: May 2006
Ort: Wiesbaden
Beiträge: 6.165
Vektoren sind hier definitv das Mittel der Wahl:
PHP-Code:
import flash.geom.Point;
import flash.events.Event;

const 
GRAVITY:Point = new Point(0.1);
const 
GROUND_LEVEL:Point 200;
const 
JUMP_EASE:Number .8;

var 
jumpAngle:Number degreesToRadians45 );
var 
jumpSpeed:Number 1;

var 
speed:Point = new Point(
    
Math.cos(jumpAngle)*jumpSpeed;
    
Math.sin(jumpAngle)*jumpSpeed;
);

addEventListener(Event.ENTER_FRAMEmove);

function 
move(event:Event):void {
    
speed speed.add(GRAVITY);
    
+= speed.x;
    
+= speed.y;

    if(
y>GROUND_LEVEL){
        
GROUND_LEVEL;
        
speed.= -speed.JUMP_EASE;
    }

Eigentlich musst Du dich nicht mal um den Winkel oder die Richtung kümmern sondern kannst bei Jump einfach eine y-Beschleunigung addieren:
PHP-Code:
import flash.geom.Point;
import flash.events.Event;

const 
GRAVITY:Point = new Point(0.1);
const 
GROUND_LEVEL:Point 200;
const 
JUMP_EASE:Number .8;

var 
speed:Point = new Point1.2);

function 
jump():void {
    
speed.-= 1;
}

function 
move(event:Event):void {
    
speed speed.add(GRAVITY);
    
+= speed.x;
    
+= speed.y;

    if(
y>GROUND_LEVEL){
        
GROUND_LEVEL;
        
speed.= -speed.JUMP_EASE;
    }
}

addEventListener(Event.ENTER_FRAMEmove); 
__________________
Viele Grüße // Martin

Martin Kraft // Interaktionsdesign

Hilfreiche Websites:
// Hilfe zur Adobe Flash Plattform
// ActionScript 2 Referenz
// ActionScript 3 Referenz
// ActionScript 3 Arbeitshandbuch
// weitere Flash Ressourcen

Bitte keine Flashfragen per PM oder Profilnachricht! Dafür ist das Forum da!

Geändert von Martin Kraft (11-05-2011 um 16:48 Uhr)
Martin Kraft ist gerade online   Mit Zitat antworten
Alt 11-05-2011, 17:09   #3 (permalink)
skylla
 
Benutzerbild von szylla
 
Registriert seit: Feb 2011
Beiträge: 166
hey martin,

das sieht interessant aus. sehr sogar. ich werde aber nicht mehr dazu kommen das heute noch zu testen.
ich werde daher morgen nochmal feedback geben und evtl. noch ein paar weiterführende fragen stellen müssen.

vielen dank soweit
szylla 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


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
MC sprung und rücklauf Boulder Dash Flash MX 2004 4 10-08-2005 20:06
Sprung bewegung ? psycho5 Spielkonzepte und Spieleprogrammierung 5 17-10-2004 23:32
sprung zurück marcepan ActionScript 1 2 17-07-2003 06:31
Sprung jakaomo Flash 4 und Flash 5 2 18-12-2001 15:16
sprung in ein *.swf maax345 Flash 4 und Flash 5 1 06-11-2001 06:36


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

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


Copyright ©1999 – 2012 Marc Thiele