Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 22-12-2003, 09:41   #1 (permalink)
Neuer User
 
Registriert seit: May 2002
Beiträge: 2
Lightbulb Brauche Hilfe mit hüpfenden Bällen :)

Für ein kleines Spielchen bräuchte ich Ball-Objekte, die ständig auf- und abhüpfen (ein bisschen gravity-mässig). Soweit kein Problem. Ich benutze den Code unten, um die Bälle hüpfen zu lassen. Die Variable 'elastic' bestimmt dabei den Abprall-Faktor. Wenn auf 1 gesetzt, erreicht der Ball wieder genau die selbe Höhe wie zuvor (hüpft also ewig auf und ab, wie gewünscht).

Aber hier ist der Haken: jeder der Bälle erscheint zu Anfang an einer zufälligen Y-Positon, soll aber, nachdem er das erste mal vom Boden abgeprallt ist, eine ganze bestimmte Höhe erreichen und dann ständig zwischen dieser gewünschten Höhe auf- und abhüpfen.

Ich dachte, das liesse sich eventuell lösen, indem ich Bällen, die unterhalb der gewünschten Maximalhöhe erscheinen, einen 'elastic'-Wert von über 1 gebe (für ein bisschen extra-Schwung) und Bällen, die zu hoch beginnen, einen niedrigeren Wert, damit sie nach dem Abprallen nicht mehr so hoch hüfen und exakt die gewünschte Höhe erreichen. Nach dem ersten Abprallen hätte ich den 'elastic'-Wert dann wieder auf 1 gesetzt, damit die Bälle ständig zwischen der gewünschten Höhe und dem Boden auf und ab hüpfen.

Jetzt bräuchte ich aber mal eben Hilfe: wie kann ich jetzt für jeden Ball den 'elastic'-Wert (also den Abprallfaktor) so berechnen, das der Ball beim ersten Abprallen exakt eine gewünschte Höhe erreicht?

Oder gibt es vielleicht einen besseren Weg, das zu erreichen?

Code:
gravity    = 75;
elastic    = 1; // bounce factor 1 = ball will reach same height again
vx         = 40; // x speed
ballRadius = _height/2;
screenWidth  = 480;
screenHeight = 390;

this.onEnterFrame = move;

function move()
	{
	x = _x; y = _y;
	vy += gravity/10; x += vx/10; y += vy/10;
	     if (y < ballRadius)              { y = ballRadius; vy = -(vy*elastic); }
	else if (y > screenHeight-ballRadius) { y = screenHeight-ballRadius; vy = -(vy*elastic); }
	     if (x < ballRadius)              { x = ballRadius; vx = -(vx*elastic); }
	else if (x > screenWidth-ballRadius)  { x = screenWidth-ballRadius; vx = -(vx*elastic); }
	_x = x; _y = y;
	}
Xpressive ist offline   Mit Zitat antworten
Alt 22-12-2003, 15:15   #2 (permalink)
.--. .. ..- ...
 
Benutzerbild von pius
 
Registriert seit: Jul 2002
Ort: munich
Beiträge: 1.345
du musst am Anfang eine vy mitgeben, denn wenn der Ball irgendwo eingeblendet wird, wenn er schon fällt, dann hat er bereits eine Geschwindigkeit ...

den richtigen vy-Wert bekommst du über die gravity und die Fallhöhe berechnet (Physik )


elasticy > 1 würde ich nicht machen, ... sonst wird der Ball immer stärker hinundher springen ...
__________________
one out of many
pius ist offline   Mit Zitat antworten
Alt 23-12-2003, 08:21   #3 (permalink)
Neuer User
 
Registriert seit: Sep 2003
Beiträge: 3
hi,
den elastic wert fuer eine bstimmte hoehe bekommst du ja durch:
ActionScript:
  1. elastic=ynew/yold;
den muesste man dem mc beim laden mitgeben; yold , also der startpunkt wird ja zufaellig bestimmt und ynew ist der neue y-Wert, der erreicht werden soll.
wenn der ball ein mal eine grenze erreicht hat, soll elastic, hoffe ich hab das verstanden, der wert 1 zugewiesen bekommen.
ActionScript:
  1. else if (y > screenHeight-ballRadius) {
  2.  y = screenHeight-ballRadius; vy = -(vy*elastic);
  3. elastic=1;
  4. }

ich denk mal, so muesste es funkioniern
suomi 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 21:55 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele