あなたが今、抱えてる悩み カンドウコーポレーションが解決します お悩み一掃!!
STAFF INFORMATION

フラッシュ・ラボ バウンド処理[クラス型] [柳谷 武]

スタッフ紹介 >> 柳谷 武 >> フラッシュ・ラボ >> バウンド処理[クラス型]  
<< 前に戻る 次へ進む >>
[空中から斜めに落下+バウンド]GRAVITY
オブジェクトが地面に接触したら動く方向が逆転して跳ね返る。
左右の動きもある状態で跳ね返る処理を作りたい。

空中から斜めに落下+バウンド

[3]こんどは、落下の角度が増したではない場合。X座標の計算も加えることで表現しました。
赤字は、前回から追加したり変更したりした部分です。

[ スクリプト - ツクリカタ ]

[A] ライブラリに準備するもの

   ・追加は特になし。

ではまず、フラッシュの実行が始まる最初のフレームにスクリプトを記述します。


初期定義

MovieClip.prototype.obj = function() {

};

obj.prototype = new MovieClip();

obj.prototype.onLoad = function() {

  //落下設定初期値

  this.ySpeed = 0;

  this.ySpeedAdd = 4;

  this.xSpeed = random(4);

  this.xSpeedAdd = 0;

  this.bound_kinds = random(10)+1;

  this.bound = 0.8;

  this.gotoAndStop(this.bound_kinds);

};



繰り返し処理

obj.prototype.onEnterFrame = function() {

  //落下設定

  this.ySpeed += this.ySpeedAdd;

  //加速
  this._x += this.xSpeed;

  this._y += this.ySpeed;

  //着地判定

  if (this._y+(this._height/2)>100) {

    //地面に当たったら

    this._y -= (this._y+(this._height/2))-100;

    //地面を軸に座標を反転

    if (this.ySpeed>0.05) {

      //バウンドの力で判断

      this.ySpeed *= -this.bound;

      this.xSpeed *= this.bound;

    } else {

      //バウンドが弱まったら

      delete this.onEnterFrame;//処理をとめる

    }

  }

};
Object.registerClass("objects", obj);



初期処理

_root.obj_max = 4;

for (i=0; i<obj_max; i++) {

  attachMovie("objects", i, i);

  this[i].num = i;

  this[i]._x = random(50);

  this[i]._y = -random(200);

  this[i]._xscale = this[i]._yscale = 160;

}


※上記のスクリプトには、全角スペースが含まれています。
コピペで使う場合、エラーが起こってしまうので、TABで行を右にずらす作業をやり直す必要があります。


[ スクリプトの意味 ]

初期定義
●this.xSpeed = 2;

●this.xSpeedAdd = 0;
X座標の計算を追加

繰り返し処理
●this._x += this.xSpeed;

X座標の計算を追加

初期処理

●this[i]._x = random(50);
右にはねるので、左よりに現れるように変更



<< 前に戻る 次へ進む >>