• 締切済み

衝突している間、違うポーズに変えたい

いつもありがとうございます。MAXOS10でFlash8です。 障害物に衝突している間は、違うポーズにしたいのでhitTestを使って以下のようなスクリプトを障害物のmcに入れました。 衝突すると、泳ぐ人は立ち上がるポーズになるのですが、その後、障害物がなくなっても立ったまま、泳いでいってしまいます。 ポーズは、泳ぐ人のmcに複数作ってフレーム移動で変えています。 衝突していた、障害物がなくなったら元のように泳いでほしいのですが、 うまくいきません。よろしく、お願いします。 onClipEvent (enterFrame) { tmp = this.hitTest (this._parent._parent.swim_02); if (tmp == true) { _parent._parent.swim_02.gotoAndPlay ("gool"); _parent._parent.swim_02._x = this._x; } }

  • Flash
  • 回答数1
  • ありがとう数2

みんなの回答

  • perse
  • ベストアンサー率74% (113/152)
回答No.1

hitTestがfalse(=障害物と衝突していない)ときに 泳ぐポーズに移動していないからでは? if (tmp) {  //立ち上がるポーズのフレームへ移動 } else {  //泳ぐポーズのフレームへ移動 }

Flash-love
質問者

お礼

早速、ありがとうございます。泳ぐポーズにフレームに移動させましたところ、mcで作っていなかったので静止のまま流されるようになってしまいました。今からmcにし直すと直すところがたくさん出てくるので、障害物からフラグを立ててフレームに落としたところ、立ち直って泳ぎだしてくれました。しかし、力技を重ねたためか処理が追いつかず、流されるままの選手もいたりします。未だ、悩んでおります。ともかく、ご回答、ありがとうございました。感謝します。

関連するQ&A

  • 同じ動作のmcが増えると同じ動作をしなくなる

    こんにちは。いつも、ありがとうございます。MAC_OS10、Flash8です。 以下のようなmcを作って水泳のアニメーションをしています。 ひとりだと問題なく動作するのですが、4人泳がせると何人かはターンしないまま、後ろ向きで泳いでしまいます。回避できる方法はないでしょうか?ここから前に進まなくて、困っています。 onClipEvent (enterFrame) { if (_x >= 675) { this.gotoAndPlay ("turn"); _x = 675; vectx = -vectx; } _x += vectx; if (_x <= 48) { if (turn_tim == 0) { this.gotoAndPlay ("turn2"); _x = 48; vectx = _parent.spd[2]; _x += vectx; } else { this.gotoAndPlay ("gool"); _x = 48; } } } onClipEvent (load) { vectx = _parent.spd[2]; turn_tim = 0; }

  • 移動範囲を指定したい

    マウスを追いかけるMC1の追いかける範囲を指定したいのですがうまくいきません; 細かい指定としては↓ (1)画面の下1/5ぐらいのMC2の中にはMC1は入れない (2)マウスがMC2の中にある時はMC1はy座標は変化なし x座標はマウスを追いかける(つまり、横にしか動かない) (3)マウスがMC2から出てきたら、再びMC1はマウスを追いかける 現状としては ------------------------------------------- onClipEvent (enterFrame) { if (this.hitTest(_root.ki.kusa)){ _x += (_parent._xmouse-_x)*0.1; this._y += 0; }else{ _x += (_parent._xmouse-_x)*0.1; _y += (_parent._ymouse-_y)*0.1; } } ------------------------------------------- これでは、マウスがMC2から出てきた時に、MC1がMC2から離れないという様になってしまうのですがどうすればいいでしょうか??

  • MCのgotoAndPlay制御について

    今現在すごく初歩的なものを作っています。 まず、MCですが、1~10フレームは歩く動作、11~20フレームは座る動作 と言ったフレームで動作を表現したものです。 このMC内で1~10フレームを繰り返すようにgotoAndPlay(1)と10フレーム目に書きました。 そして、このMCに onClipEvent (load) { // スピードの初期値 spd = 5; } onClipEvent (enterFrame) { // spd ずつ右へ移動 this._x += spd; if(this._x>100){ spd = 0; this.gotoAndPlay(11); } } といったように A地点~B地点は歩いている動作をさせながら5ずつ移動させ、100まで来たら停止させ、 そのB地点では座る動作(MCの11フレーム目から)をスタートさせるようにしました。 しかし、実際はMCの11フレーム目で固まった状態です onClipEvent (enterFrame)なので当たり前なのは分かっているのですが、 他に方法が分かりません。 何かなるべく完結な方法はありますでしょうか?

    • ベストアンサー
    • Flash
  • mcのx座標が50以上になったら次フレーム

    タイトルどおり、 mcのx座標が50以上になったら次フレーム という処理をしたく、 mcに次のアクションスクリプトを記述しました。 onClipEvent(enterFrame){ this._x += 10; } onClipEvent(load){ if(this._x >= 50){ nextFrame(); } } しかし何故か次のフレームに行ってくれません。 どこか間違っているのでしょうか。。。 nextFrame();をgotoAndPlay(2);にしても駄目でした。

    • ベストアンサー
    • Flash
  • flash as2.0 hitTest()について

    FLASHMXで作業をしています。 mcが壁に当たると反対方向にmcを移動させたいのですが 以下では、うまくいきません。理由がわかりませんし打開策も わかりません。解決策を教えてください。よろしくお願いいたします。 onClipEvent(load){ this._x=100; this._y=380; } onClipEvent(enterFrame){ this._y -=3; if(_root.tama_mc.hitTest(_root.kabe_mc)==true){ this._y +=5; } }

  • 複数のmcに同じイベントを記述したら、1つしか反応しない

    うまくいかない原因がわからず困っています。 画面上の複数のmcに同じイベントを記述しました。 内容はシンプルで、「mc01にマウスがのったらフレームf01に移動する、 マウスが離れたらフレームstartに戻る」というものです。 mc02はf02へ、mc03はf03へ移動というふうにします。 これをmc01からmc07まで順番に書いていったところ mc07は反応するのですが、あとの6つが反応しません。 mc07の記述を消すとmc06が反応するようになり、 どうやら一番最後に記述している部分しか反応しないようです。 これ↓がそれぞれのmcに書いてるASです。 ---------------------------------------------------------- onClipEvent (enterFrame) { if (_root.mc01.hitTest(_root._xmouse,_root._ymouse,1)) { _root.gotoAndPlay("f01"); } else { _root.gotoAndPlay("start"); } } ---------------------------------------------------------- ちなみにFlash8使用、プレイヤー8でパブリッシュしてます。 どうぞよろしくお願いします。

    • ベストアンサー
    • Flash
  • flashのMCの中にMCを入れてその中のボタンでシーンを移動したいのですができません

    flashの シーン1で大元になる5つのMCで構成された大元のMCにはonClipEvent (enterFrame)のスクリプトを記述しています。 その5つのMCの中、それぞれに、ボタンがあります。そのボタンはシーン1からシーン2に飛ばすアクションをつけているのですが、まったく反応しません。 なぜか、同一シーンのフレーム移動は反応するのですが。ボタンの記述は下記です。 on (release) { _parent._parent.gotoAndPlay("work", 1);

    • ベストアンサー
    • Flash
  • 障害物に対する衝突判定

    こんばんは。WinXP、Flash8Proにてオーサリングしています。 hitTestにて衝突判定を行っているのですが、 RPGの場合、キャラクターが障害物に衝突する際の 処理に頭を悩めております。 _global.obje_hit=function(){ if(_global.key_cord=='d'){ _root.main_mc.player_mc._x -= 20; }else if(_global.key_cord=='a'){ _root.main_mc.player_mc._x += 20; }else if(_global.key_cord=='w'){ _root.main_mc.player_mc._x += 20; }else if(_global.key_cord=='s'){ _root.main_mc.player_mc._y -= 20; } _root.main_mc.player_mc.gotoAndPlay(1); } *キャラクターの移動は他のFunctionにて キー入力により、ASで位置やMCの動きを制御しています。 W,S,A,Dのそれぞれのキーで上下左右の向きのMCを再生させて、場所移動によって動かしているのですが、 現時点では、プレイヤーのMCが障害物と反発する事でしか、障害物による静止処理ができていません。 跳ね返らずに、一般的なRPGの様に”行き止まる”様にしたいのですが、 ASだけでするには、どのようにしたら良いのでしょうか。 やはり、キャラクターの行動しているMCから調節しなくてはいけないのでしょうか。 どうぞ宜しくお願い致します。

    • ベストアンサー
    • Flash
  • 良いソースの書き方について(複数のインスタンスをまとめてヒットテストする方法)

    ■例文: ---------------------------------------------------------------- onClipEvent (enterFrame) { if ( this.hitTest(_root.char1)) { _parent.nextFrame(); } else if ( this.hitTest(_root.char2)) { _parent.nextFrame(); } else if ( this.hitTest(_root.char3)) { _parent.nextFrame(); } else if ( this.hitTest(_root.char4)) { _parent.nextFrame(); } else if ( this.hitTest(_root.char5)) { _parent.nextFrame(); } else if ( this.hitTest(_root.char6)) { _parent.nextFrame(); } else if ( this.hitTest(_root.char7)) { _parent.nextFrame(); } else if ( this.hitTest(_root.char8)) { _parent.nextFrame(); } else if ( this.hitTest(_root.char9)) { _parent.nextFrame(); } else if ( this.hitTest(_root.char10)) { _parent.nextFrame(); } else if ( this.hitTest(_root.char11)) { _parent.nextFrame(); } } ---------------------------------------------------------------- 上記は、_root.char1 から_root.char11までインタンス名をつけたムービークリップとのヒット確認をするアクションスクリプトです。 こういう動作をしたい場合。 for文を駆使する等で、ソースを短くまとめる方法はありませんでしょうか。 いい案がありましたら、是非ご教授の程宜しくお願い致します。

    • ベストアンサー
    • Flash
  • キー入力で操作しているMCを障害物で止める方法

    WinXP、Flash8Proにてオーサリングしております。 【文字制限上最小限の説明とスクリプトも寄せてあります】下sと右dの場合ではプレイヤーの位置が障害物内に飛ぶ。一度衝突判定が実行されると障害物から離れられない。障害物に接触したあと接触時と違うキーを押すと障害物の反側面に飛んでしまう現象や、障害物は多数が若干かさなり合いながら置かれているので、その障害物の上をプレイヤーが流される現象が起こる。何か良い打開策はないものでしょうか。【障害物のMCに記載】 onClipEvent (enterFrame) { PM=_root.main_mc.player_mc.player_mc_mc; PMM=_root.main_mc.player_mc.player_mc_mc.player_mc_mc; if(this.hitTest(PMM)){ _global.key_lis2();//getting key_code2 _global.edge = new Object; _global.edge = this.getBounds(PM._parent); ply=PM;MC1=this._parent;//obje MC2=_root.main_mc.player_mc;//ply //「obje」ムービークリップの座標をグローバル座標に変換 p = new Object();p.x = this._x;p.y = this._y; MC1.localToGlobal( p ); //変換した座標を「ply」と同じ座標系の座標に変換 MC2.globalToLocal( p ); var edge:Object , adjust:Number; edge = new Object;adjust = 2; edge = this.getBounds(_root.main_mc.player_mc); trace("edge="+edge.yMax); switch( _global.key_code2 ){case 'w': MC2.player_mc_mc._y = edge.yMax;break;case 's': MC2.player_mc_mc._y = edge.yMin;break;case 'a': MC2.player_mc_mc._x = edge.xMax;break;case 'd': MC2.player_mc_mc._x = edge.xMin;break;default:break; }}//end of hitTest}//end of onEnterFrame

    • ベストアンサー
    • Flash

専門家に質問してみよう