[PR]田丸麻紀さん愛用ダイエット:大人気サプリメント!注文殺到中です
Cross機能
クロス、「交差」お待たせしてすいません
一定の場所のみがリバース適用される、つまりはクロス

今回は根本的な所を弄るので帳尻合わせの為に色んな所を弄ります、Option製作に慣れてきた人用かもです
この場合のクロスは細かく言うと
「クロスの場合、下と上矢印のステップゾーンのみがリバースし、矢印もそれぞれ違う流れ方をする。」です
と、言うわけで矢印の動きを扱っている「MAKE矢印」をまず弄りましょう

ステップゾーンは一括で管理しているために別々には動かせませんなので別々に動かすために
アクションの枠をぐいっと広げて中腹辺りにある function move1 これを弄ります
これは流れてくる矢印の速さ
ライフが0になったらゲームオーバーに行くなどゲームの矢印関係の設定をしている所です
で、これを二つ作ってクロスの時、反転する奴と反転しない奴とを使い分ける様にします
が、その前に move1にクロスだった場合通常時と同じ扱いをするようにちょっと追加しましょう
if (_global.Reverse == false || _global.Reverse == "cross") {
//もしリバース設定が OFF か Cross なら
これでクロスの時動かない方はちゃんと動くようになります、さて次に行きましょう

思いっきり枠伸ばしてみました、この様に新たに function move2 を作ります
ちなみにmove2の場合
クロスの設定を適用した時にのみ使用するように調整するのでリバース設定の部分は要りません
内容は function move1 とほとんど同じですが
何が変わっているかというと上3行が違います、move1 と比較して行きましょう
function move1() { //move機能1
this._y -= _global.SpeedUp; //流れてくる矢印はSpeedUpの値を引いていく
if (this._y<_global.out) { //もし流れてくる矢印の位置が out 値より少なければ
function move2() { //move機能2
this._y -= -(_global.SpeedUp); //流れてくる矢印はSpeedUpの値をマイナスにした物を引いていく
if (this._y>390) { //もし流れてくる矢印の位置が390以上になったならば
ちょっと小難しいのでコメント+解説で進めていきます
1行目の名前は1とは別物にしておきましょう、この場合 function move2です
2行目は流れてくる矢印の動きを設定しています Speed設定で標準速度を選択していた場合は 2 になりますね
でもこの場合 function move2では
クロスの時に反転させる矢印に使うのですから矢印が逆に流れてくるようにします
そのため SpeedUp 値にマイナスをかけてあげます(-2はリバース状態ですからね)
3行目はこれ以下に
_parent.effect.gotoAndPlay(230); //上の領域エフェクトを230番に移動させ開始する
_global.uwan++; //ウワァン値を1足す
_global.life--; //ライフを1減らす
このように続きますがこれはウワァンを取った時、つまりは設定したイイ判定からズレた時の事を指しています
move2 では _global.out の部分を 390 としていますが
クロスをしている時に out 値はノーマルの状態になっているので
390と言う数字を直接入れます
と、長くなりましたがここでひとまず使い分けるべく二つの move が作れました、今度はこれを対応させていきましょう
同じく[MAKE矢印]の下の方、"upMC" "downMC"などが見えるところに行きましょう
これの _parent[newArrowName].onEnterFrame = this.move1; と言う所に注目、いかにも怪しいですね
ここで function move1を 上矢印は使っていますよと言う指定をしています
これをオプションによって使い分けるようにしましょう

if (_global.Reverse == "cross" ) { //もしリバース設定が"クロス"なら
_parent[newArrowName].onEnterFrame = this.move2; //メインステージの矢印の動きに move2 を使う
_parent[newArrowName]._y = _global.SpeedY-(70+300*(_global.SpeedUp-1));
//メインステージの Y は SpeedY-(70+300*(SpeedUp-1)の値になる
} else if (_global.Reverse == true || _global.Reverse == false){ //そうではなくもしリバース設定が on か off なら
_parent[newArrowName].onEnterFrame = this.move1; //メインステージの矢印の動きに move1 を使う
_parent[newArrowName]._y = _global.SpeedY; //メインステージの Y はSpeedYの値になる
}
そろそろこんがらがって来るでしょうけどがんばりましょうあと一息かもしれません
クロスの場合の Y は この計算で Speed設定が1の場合
370 - (70+300*(2-1)) =370 - 370 = 0 という訳でリバース状態の SpeedYになります
こうする事でリバースを根本から設定する事できるわけです
これを UP と DOWNに仕込むわけです(絵をよく参照してください)
さて、ここまでできればCrossの仕組みは完成です
後はスピードがちゃんと切り替わるようにするのと、ステップゾーンもちゃんと変わるようにして行きましょう

まずはステップゾーンから
if (_global.Reverse == true || _global.Reverse == "cross") { //もしリバース設定が on か cross なら
this._y = 300; //ステップゾーンの位置を300に
_root.up_hit._y = 300; //当たり判定の位置を300にする
これはクロスになった時に反転するステップゾーンに追加しましょう(この場合だとup_stepと down_step)
元ソースからだと1行目の true の後にクロスの文を付け加えるだけでOKです
では次に設定のスピード設定も同じように足しましょう

if (_global.Reverse == false || _global.Reverse == "cross") { //もしリバース設定が off か cross なら
_global.SpeedY = 370; //SpeedY を 370 に
_global.SpeedUp = 2; //SpeedUp を 2 に
_global.out = -10; //out を -10 にする
これでOKですMAKE矢印でクロスになった場合上下のみは設定でちゃんとリバースになるようになっているので
スピード設定では off だった時に付け加えましょう、これで反転しない 左、右、おにぎりが正常に流れてきます
以上で終了です、お疲れ様でした
相当色んな所を弄っているので別の所を反転するクロスが作りたい
なんて事になれば色んな軽量化の方法が出てくると思います
他にも色んな方法でクロスが実現できるかもしれません
まるで分からない場合は「基礎と改造」ページを読み、簡単なOptionから挑戦してみるといいでしょう
細かい所がどうしても分からない、もしくは解説が間違っているのではないか?などと言う点は掲示板で御願いします
基礎ページでも言っていますが
長いからと言ってASをコピペすると「シンタックスエラー」が出ますのでかならず手打ちでやりましょう