このサイトは、只今WEB業界で活躍中のデザイナー、プログラマーの方々の情報を集めたweb統合情報サイトです。

ActiinScript2.0 ボールアクション 重力、摩擦、跳ね返り係数

この記事は最終更新日から1年以上が経過しています。

前回のActiinScript2.0 縦横移動 ボールを掴んで投げるの続きとなります。

最後によりボールの感じを出すために、重力、摩擦、跳ね返り係数について考えたいとおもいます。

跳ね返り係数

跳ね返り係数とはボールが壁に当たったとき、どのくらいの力で跳ね返すか?という値になります。

スーパーボールなどのボールの跳ね返り係数は100に近い数値になりますが、

ボーリング玉等の重く、跳ね返りが悪いボールの跳ね返り係数は0に近い数値となります。

ではどう設定するのかといいますと、今まで、壁に当たった時の計算は

speedX = speedX*-1;

と、符号を反転させるのみでしたが、これに跳ね返り係数を付け加えます。

壁にぶつかった時は80%の力で跳ね返すとすると、

speedX = speedX*-1*0.8;

このように0.8をかけると、壁にぶつかった時は80%の力で跳ね返します。

この設定を上下左右に設定すれば完成です。

空気抵抗

続いて空気抵抗について考えます。

現状、縦横と移動する計算式は

this._x += speedX;
this._y += speedY;

この2行で求められていると思います。この式に少し付け加えます。

この2行の上に以下のスクリプトを追加します。

speedX = speedX*0.99;
speedY = speedY*0.99;

このスクリプトを追加することによって、1%ずつスピードを減少させること、

つまり空気抵抗を付ける事ができます。

重力

 最後に重力を付けます。難しいことは何もありません。

重力は常に下方向にかかっています。

座標で考えると、常にy座標にプラスの値が増加すればいいとなります。

speedY = speedY*0.99+0.98;

と先ほど空気抵抗を付けるための式に+0.98足せば完成です。

常に下方向へ行くようになります。

完成したscriptは以下の通りになります。

onClipEvent(load){
speedX = 10;
speedY = 8;
ballHold = 0;
}
onClipEvent(enterFrame){
if(ballHold == 1){
x1 = x2;
y1 = y2;
x2 = this._x;
y2 = this._y;
speedX = (x2-x1);
speedY = (y2-y1);
}else{
if (this._x>500-this._width/2){
this._x = 500-this._width/2;
speedX = speedX*-1*0.8;
}
if (this._x<0+this._width/2) {
this._x = 0+this._width/2;
speedX = speedX*-1*0.8;
}
if (this._y>400-this._width/2) {
this._y = 400-this._width/2;
speedY = speedY*-1*0.8;
}
if (this._y<0+this._width/2) {
this._y = 0+this._width/2;
speedY = speedY*-1*0.8;
}
speedX = speedX*0.99;
speedY = speedY*0.99+0.98;
this._x += speedX;
this._y += speedY;
}
}
on (press) {
ballHold = 1;
startDrag(this, true);
}
on (release) {
ballHold = 0;
stopDrag();
}

2011年11月現在、HTML5,css3に注目が行き、まったくFlashにはフューチャーされてなく

死語となりつつありますが(笑) 、

あえてFlashの記事を書いてみました。

値を変えて頂き使って頂ければと思ってます。

デモページ
デモページはこちらから

Related Article

LATEST NEWS

RANKING

ARCHIVE

SPONSOR

現在、掲載募集中です。



Links

現在、掲載募集中です。



About Us

WEBデザイナーの、WEBデザイナーによる、WEBデザイナーの為のサイト。「みんなで書こう!」と仲間を募ってみたが、結局書くのは自分だけとなってしまいました。日々のメモを綴っていきます。

Entry Profile

Graphical FrontEnd Engineer
- Daisuke Takayama

MAD CITY 北九州市で生まれ育つ。20代はバンド活動に明け暮れ、ふと「webデザイナーになりたい。」と思い、デジタルハリウッド福岡校入学。卒業後、数々の賞を受賞、web業界をざわつかせる。
現在、主に、ゲーム制作中心に港区六本木界隈で活動中。