電子書籍の厳選無料作品が豊富!

質問です。
MCが画面いっぱい、左右(x座標)に繰り返し移動するものを作りたいのですが
うまく動作を指定できず悩んでいます・・・。

例えば、左に移動のみ、右に移動のみの繰り返しの動作はつけられます。
ですがそれを左に行ったら右に戻るという動作がつけられません。
もしかしたらとても簡単な事でしょうか?
それでしたらすみません・・・。

そして、右端から左端に移動したら一段(15px)下がって再び同じ動作を繰り返す・・・何て事は可能でしょうか?

ステージの大きさは、240×240です。
MCは、15×15のものと15×14のものの二種類で、基準点は中心です。
ちなみにグリッドは5pxに設定しています。
左端のxは-110、右端は110くらいで。

お分かりになる方がいらっしゃいましたら、ご返答いただきたいです。
宜しくお願いいたします。

A 回答 (2件)

まず,考え方としては,



 _x += (1)*移動距離
     ↓
  端まで来たら
     ↓
 _x += (-1)*移動距離
     ↓
  端まで来たら
     ↓
 _x += (1)*移動距離
     ↓
  端まで来たら
     ↓
 _x += (-1)*移動距離
     ↓
     …

という感じで,
1 と -1 を入れ替えればいいわけです。



次に,具体的な方法です。

15×15のMCはでも良いですし,
15×14のMCはでも良いです。
どちらでも良いので,
MC 内のフレームを 3フレームにします。
そして,
スクリプト用レイヤーを用意し,3フレーム目を空白キーフレームにします。

 □ レイヤー 筆・・|○ []|○| ←スクリプト
 □ レイヤー 筆・・|●//// | ←何か物

そして,
MC 内タイムラインの 「フレーム1」 で,
次のような変数に定数を設定しておきます。

-------------------------------
// 切り替えのための変数 flg の初期値
flg = 1;
// スピードの設定 (※可変)
spd = 8;
-------------------------------


「フレーム2」には何も書きません。


そして,「フレーム3」に次のように書けば,できあがりです。

-------------------------------
// x座標を spd ずつ加算or減算
_x += flg*spd;
// x座標が「ステージの幅-このMCの幅/2」になれば
if (_x>=-_width/2+240) {
// x座標を「ステージの幅-このMCの幅/2」で固定
_x = -_width/2+240;
// y座標を高さ分下へ
_y += _height;
// そしてフラグの符号を変える
flg *= -1;
//
// x座標が「このMCの幅/2」になれば
} else if (_x<=_width/2) {
// x座標を「このMCの幅/2」で固定
_x = _width/2;
// y座標を高さ分下へ
_y += _height;
// そしてフラグの符号を変える
flg *= -1;
}
//
// このMC内を フレーム2 に戻して Play
gotoAndPlay(2);
-------------------------------



2つ MC がありますが,
どちらとも同じ構造とスクリプトで行けます。
 

この回答への補足

早々のご返答ありがとうございます!
動きをつけるコトが出来ました。

でも、これはMCがx座標の0に配置されていないと正常に動かない様ですね。
0ではなく例えば20など他の位置にしたい場合は
どのように変えれば良いでしょうか?

宜しくお願いいたします。

補足日時:2007/03/05 00:08
    • good
    • 0

#1です。



> これはMCがx座標の0に配置されていないと正常に動かない様ですね。

そんなことはないと思いますが。
ステージに見えている範囲に置いてくださればどこでもOKだと思いますよ。

ただ,
最初に進む向きに関しては,

// 切り替えのための変数 flg の初期値
flg = 1;

をこのままか,
場合によっては -1 に変えてください。
最初に右に進みたい場合が 1 で,
最初に左に進みたい場合が -1 です。
    • good
    • 0
この回答へのお礼

なるほど!!
flgの値を変えたら正常に動きました。
お手数をおかけして申し訳ございませんでした。
非常に勉強になりました!ありがとうございました。

お礼日時:2007/03/05 17:21

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!