Autor |
Nachricht |
Anti78
Threadersteller
Dabei seit: 16.09.2003
Ort: Tbb/Mz/M
Alter: 46
Geschlecht:
|
Verfasst Mi 08.10.2008 10:21
Titel [Flash CS3] - Figur springen lassen |
|
|
Hi Leute.
Ich will mir zur Zeit so ein bisschen Spiele Programmierung beibringen und habe deshalb die Tutorials auf http://www.dm.hs-ulm.de/showcase/steinmerz/ durchgemacht. Funktioniert auch soweit.
Nur eines würde ich gerne ändern. Und zwar, dass, wenn die Figur springen soll, man nicht lange auf der Space-Taste bleiben muss, sondern dass die Figur mit einer festen Höhe springt sobald man die Space-Taste drückt. Doch egal was ich probiere, es funktioniert nicht.
Auszug (Sprungcode)
Code: | sprungkraft = 0;
space_pressed = false;
max_sprung = 20;
gravitation = 1;
nullpunkt = y_pos;
absoluter_nullpunkt = nullpunkt;
t_springen = 20;
figur_springt = false;
x_faktor = 1;
absprung_bool = false;
fallen_bool = false;
landen_bool = false;
b_box_verschiebung = 6; |
Code: | springen = function(){
if(sprungkraft > 0 && !absprung_bool){
absprung_bool = true;
sequenz("absprung");
}
if(sprungkraft < 0 && !fallen_bool){
fallen_bool = true;
sequenz("fallen");
}
if((figur._y+50) > nullpunkt && sprung_kraft < 0 && !landen_bool){
landen_bool = true;
sequenz("landen");
}
x_faktor = 1+ sprungkraft/(max_sprung*3);
sprungkraft -= gravitation;
figur._y -= sprungkraft;
if(figur._y > nullpunkt){
x_faktor = 1;
figur_springt = false;
absprung_bool = false;
fallen_bool = false;
landen_bool = false;
figur._y = nullpunkt;
sprungkraft = 0;
sprung_hoehe.text = sprungkraft;
clearInterval(intervalID_springen);
}
} |
Wäre super wenn mir jemand helfen könnte.
Gruß
Andreas
Zuletzt bearbeitet von Anti78 am Mi 08.10.2008 10:27, insgesamt 1-mal bearbeitet
|
|
|
|
|
phihochzwei
Moderator
Dabei seit: 08.06.2006
Ort: Mülheim an der Ruhr
Alter: 46
Geschlecht:
|
Verfasst Mi 08.10.2008 11:15
Titel
|
|
|
Auszug bringt hier nicht viel, weil der Relevante Code fehlt
|
|
|
|
|
Anzeige
|
|
|
Anti78
Threadersteller
Dabei seit: 16.09.2003
Ort: Tbb/Mz/M
Alter: 46
Geschlecht:
|
Verfasst Mi 08.10.2008 11:25
Titel
|
|
|
Wollte euch nicht mit dem Code erschlagen.
Hier ist er:
Code: | // Definitionsbereich
x_pos = 400;
y_pos = 400;
groesse = 15;
speed = 5;
speed_max = speed*3;
xpos_min = 10;
xpos_max = 800 - xpos_min;
bisherigeBewegung = "keineBewegung";
sprungkraft = 0;
space_pressed = false;
max_sprung = 20;
gravitation = 1;
nullpunkt = y_pos;
absoluter_nullpunkt = nullpunkt;
t_springen = 20;
figur_springt = false;
x_faktor = 1;
absprung_bool = false;
fallen_bool = false;
landen_bool = false;
b_box_verschiebung = 6;
anzahl_ebenen = 0;
ebenennummer = -1;
auf_ebene = new Array;
x_bereich = new Array;
plattform = new Array;
while(this["ebene_"+anzahl_ebenen] != undefined){
auf_ebene[anzahl_ebenen] = false;
x_bereich[anzahl_ebenen] = false;
plattform[anzahl_ebenen] = new Array;
plattform[anzahl_ebenen][0] = this["ebene_"+anzahl_ebenen]._x;
plattform[anzahl_ebenen][1] = this["ebene_"+anzahl_ebenen]._y;
plattform[anzahl_ebenen][2] = this["ebene_"+anzahl_ebenen]._width;
anzahl_ebenen++;
}
createTextField("sprung_hoehe", 10, 20, 20, 20, 20);
sprung_hoehe.text = sprungkraft
// Programmierbereich
attachMovie("maennchen", "figur", 25);
figur._x = x_pos;
figur._y = y_pos;
figur._xscale = groesse;
figur._yscale = groesse;
sequenz = function(modus){
if (modus != bisherigeBewegung) {
figur.gotoAndPlay(modus);
bisherigeBewegung = modus;
}
}
kollision = function(){
b_box = new Object;
b_box = figur.getBounds(this);
for(i = 0; i < anzahl_ebenen; i++){
if(b_box.xMax > plattform[i][0] + b_box_verschiebung && b_box.xMin < (plattform[i][0] + plattform[i][2])- b_box_verschiebung){
x_bereich[i] = true;
if(b_box.yMax < plattform[i][1] && b_box.yMax > plattform[i][1]-65){
nullpunkt = plattform[i][1] -65;
ebenennummer = i;
if(figur._y == plattform[i][1] - 65){
auf_ebene[i] = true;
}
}
}
else{
x_bereich[i] = false;
if(auf_ebene[ebenennummer] && !x_bereich[ebenennummer]){
nullpunkt = absoluter_nullpunkt;
auf_ebene[ebenennummer] = false;
x_bereich[ebenennummer] = false;
ebenennummer = -1;
if(!figur_springt){
sprungkraft = 0;
figur_springt = true;
intervalID_springen = setInterval(springen, t_springen);
}
}
}
}
}
x_bewegung = function(ausrichtung, bewegung){
figur._x += bewegung*x_faktor;
figur._xscale = ausrichtung;
if(figur._x < xpos_min || figur._x > xpos_max){
figur._x -= bewegung*x_faktor;
}
}
springen = function(){
if(sprungkraft > 0 && !absprung_bool){
absprung_bool = true;
sequenz("absprung");
}
if(sprungkraft < 0 && !fallen_bool){
fallen_bool = true;
sequenz("fallen");
}
if((figur._y+50) > nullpunkt && sprung_kraft < 0 && !landen_bool){
landen_bool = true;
sequenz("landen");
}
x_faktor = 1+ sprungkraft/(max_sprung*3);
sprungkraft -= gravitation;
figur._y -= sprungkraft;
if(figur._y > nullpunkt){
x_faktor = 1;
figur_springt = false;
absprung_bool = false;
fallen_bool = false;
landen_bool = false;
figur._y = nullpunkt;
sprungkraft = 0;
sprung_hoehe.text = sprungkraft;
clearInterval(intervalID_springen);
}
}
onEnterFrame = function(){
kollision();
if(Key.isDown(Key.CONTROL)){
if(Key.isDown(Key.RIGHT)){
x_bewegung(groesse, speed_max);
if(!figur_springt){
sequenz("rennen");
}
}
if(Key.isDown(Key.LEFT)){
x_bewegung(-groesse, -speed_max);
if(!figur_springt){
sequenz("rennen");
}
}
}
else{
if(Key.isDown(Key.RIGHT)){
x_bewegung(groesse, speed);
if(!figur_springt){
sequenz("gehen");
}
}
if(Key.isDown(Key.LEFT)){
x_bewegung(-groesse, -speed);
if(!figur_springt){
sequenz("gehen");
}
}
}
if((!Key.isDown(Key.RIGHT) && !Key.isDown(Key.LEFT) || Key.isDown(Key.RIGHT) && Key.isDown(Key.LEFT)) && !figur_springt){
bisherigeBewegung = "keineBewegung";
figur.gotoAndStop("gehen");
}
if(Key.isDown(Key.SPACE) && !figur_springt){
space_pressed = true;
if(sprungkraft < max_sprung){
sprungkraft++;
sprung_hoehe.text = sprungkraft;
}
}
if(!Key.isDown(Key.SPACE) && space_pressed){
space_pressed = false;
figur_springt = true;
intervalID_springen = setInterval(springen, t_springen);
}
} |
|
|
|
|
|
phihochzwei
Moderator
Dabei seit: 08.06.2006
Ort: Mülheim an der Ruhr
Alter: 46
Geschlecht:
|
Verfasst Mi 08.10.2008 11:45
Titel
|
|
|
Versuch mal Code: | // Definitionsbereich
x_pos = 400;
y_pos = 400;
groesse = 15;
speed = 5;
speed_max = speed*3;
xpos_min = 10;
xpos_max = 800 - xpos_min;
bisherigeBewegung = "keineBewegung";
sprungkraft = 0;
space_pressed = false;
max_sprung = 20;
gravitation = 1;
nullpunkt = y_pos;
absoluter_nullpunkt = nullpunkt;
t_springen = 20;
figur_springt = false;
x_faktor = 1;
absprung_bool = false;
fallen_bool = false;
landen_bool = false;
b_box_verschiebung = 6;
anzahl_ebenen = 0;
ebenennummer = -1;
auf_ebene = new Array;
x_bereich = new Array;
plattform = new Array;
while(this["ebene_"+anzahl_ebenen] != undefined){
auf_ebene[anzahl_ebenen] = false;
x_bereich[anzahl_ebenen] = false;
plattform[anzahl_ebenen] = new Array;
plattform[anzahl_ebenen][0] = this["ebene_"+anzahl_ebenen]._x;
plattform[anzahl_ebenen][1] = this["ebene_"+anzahl_ebenen]._y;
plattform[anzahl_ebenen][2] = this["ebene_"+anzahl_ebenen]._width;
anzahl_ebenen++;
}
createTextField("sprung_hoehe", 10, 20, 20, 20, 20);
sprung_hoehe.text = sprungkraft
// Programmierbereich
attachMovie("maennchen", "figur", 25);
figur._x = x_pos;
figur._y = y_pos;
figur._xscale = groesse;
figur._yscale = groesse;
sequenz = function(modus){
if (modus != bisherigeBewegung) {
figur.gotoAndPlay(modus);
bisherigeBewegung = modus;
}
}
kollision = function(){
b_box = new Object;
b_box = figur.getBounds(this);
for(i = 0; i < anzahl_ebenen; i++){
if(b_box.xMax > plattform[i][0] + b_box_verschiebung && b_box.xMin < (plattform[i][0] + plattform[i][2])- b_box_verschiebung){
x_bereich[i] = true;
if(b_box.yMax < plattform[i][1] && b_box.yMax > plattform[i][1]-65){
nullpunkt = plattform[i][1] -65;
ebenennummer = i;
if(figur._y == plattform[i][1] - 65){
auf_ebene[i] = true;
}
}
}
else{
x_bereich[i] = false;
if(auf_ebene[ebenennummer] && !x_bereich[ebenennummer]){
nullpunkt = absoluter_nullpunkt;
auf_ebene[ebenennummer] = false;
x_bereich[ebenennummer] = false;
ebenennummer = -1;
if(!figur_springt){
sprungkraft = 0;
figur_springt = true;
intervalID_springen = setInterval(springen, t_springen);
}
}
}
}
}
x_bewegung = function(ausrichtung, bewegung){
figur._x += bewegung*x_faktor;
figur._xscale = ausrichtung;
if(figur._x < xpos_min || figur._x > xpos_max){
figur._x -= bewegung*x_faktor;
}
}
springen = function(){
if(sprungkraft > 0 && !absprung_bool){
absprung_bool = true;
sequenz("absprung");
}
if(sprungkraft < 0 && !fallen_bool){
fallen_bool = true;
sequenz("fallen");
}
if((figur._y+50) > nullpunkt && sprung_kraft < 0 && !landen_bool){
landen_bool = true;
sequenz("landen");
}
x_faktor = 1+ sprungkraft/(max_sprung*3);
sprungkraft -= gravitation;
figur._y -= sprungkraft;
if(figur._y > nullpunkt){
x_faktor = 1;
figur_springt = false;
absprung_bool = false;
fallen_bool = false;
landen_bool = false;
figur._y = nullpunkt;
sprungkraft = 0;
sprung_hoehe.text = sprungkraft;
clearInterval(intervalID_springen);
}
}
onEnterFrame = function(){
kollision();
if(Key.isDown(Key.CONTROL)){
if(Key.isDown(Key.RIGHT)){
x_bewegung(groesse, speed_max);
if(!figur_springt){
sequenz("rennen");
}
}
if(Key.isDown(Key.LEFT)){
x_bewegung(-groesse, -speed_max);
if(!figur_springt){
sequenz("rennen");
}
}
}
else{
if(Key.isDown(Key.RIGHT)){
x_bewegung(groesse, speed);
if(!figur_springt){
sequenz("gehen");
}
}
if(Key.isDown(Key.LEFT)){
x_bewegung(-groesse, -speed);
if(!figur_springt){
sequenz("gehen");
}
}
}
if((!Key.isDown(Key.RIGHT) && !Key.isDown(Key.LEFT) || Key.isDown(Key.RIGHT) && Key.isDown(Key.LEFT)) && !figur_springt){
bisherigeBewegung = "keineBewegung";
figur.gotoAndStop("gehen");
}
if(Key.isDown(Key.SPACE) && !figur_springt){
space_pressed = true;
sprungkraft = max_sprung;
sprung_hoehe.text = sprungkraft;
}
if(!Key.isDown(Key.SPACE) && space_pressed){
space_pressed = false;
figur_springt = true;
intervalID_springen = setInterval(springen, t_springen);
}
} |
Ansonsten wäre ne FLA super, dann kann ich auch Testen was ich hier mache
|
|
|
|
|
Anti78
Threadersteller
Dabei seit: 16.09.2003
Ort: Tbb/Mz/M
Alter: 46
Geschlecht:
|
Verfasst Mi 08.10.2008 11:51
Titel
|
|
|
Schaut schon gut aus.
Nur wenn man auf der Leertaste bleibt fliegt er unendlich nach oben. Und die Sprünge sind anscheinend immer noch unterschiedlich hoch. Kann es sein, dass du mit dem Code einfach die Intervallzeit wie schnell es hoch zählt, geändert hast? Ist auf jeden Fall schon um Längen besser als vorher.
Hier ist die FLA: Gezippt
|
|
|
|
|
Anti78
Threadersteller
Dabei seit: 16.09.2003
Ort: Tbb/Mz/M
Alter: 46
Geschlecht:
|
Verfasst Fr 10.10.2008 12:17
Titel
|
|
|
Kann mir da noch jemand helfen? Wollte es am Wochenende fertig machen. Bitte.
|
|
|
|
|
phihochzwei
Moderator
Dabei seit: 08.06.2006
Ort: Mülheim an der Ruhr
Alter: 46
Geschlecht:
|
Verfasst Fr 10.10.2008 12:47
Titel
|
|
|
heute nachmittag gerne, ich hab gerade nur hier im büro viel umme ohre
|
|
|
|
|
phihochzwei
Moderator
Dabei seit: 08.06.2006
Ort: Mülheim an der Ruhr
Alter: 46
Geschlecht:
|
Verfasst Sa 11.10.2008 18:34
Titel
|
|
|
Also bei mir springt er nur einmal hoch, nix mit unendlich. Oder versteh ich nicht was du meinst.
|
|
|
|
|
|
|
|
Ähnliche Themen |
Sprechende Flash-Figur gesucht
3D figur mit design überziehen
Suche diese Figur
Suche Figur für 80er-DVD-Sampler
suche 3D Figur für Webseite .. Bilder anbei
Im Iframe zu Anker springen
|
|