問答収集 カテゴリ:Flashプログラミング
現在のスレッド一覧 / 新規に質問を投稿
1 名前:はる 日付:2012/12/23(日)14:56:31 ID:6YTjjHIBS0Jz
はじめまして。
いつも参考にさせて頂いています。
分からなかった事があるので質問させてください。

AS2.0でこちらの http://hakuhin.jp/as/collide.html#COLLIDE_01 
「矩形を使った地形との衝突を計算する」の collide_01_00_fla05_as1.fla を参考にフラッシュを作成していたのですが、
サンプルだとひとつのムービークリップを反転させて右向きや左向きをしているため、
左右非対称のキャラクターで差し替えた場合おかしなことになってしまいます。
サンプルのキャラクターで例えますと、右を向いても左耳が黒く、左を向いても左耳が黒いように表示をして、

右向きの立ち表示の時にジャンプをする

右向きの時にジャンプをした用のアニメに飛ぶ

右向きの時に着地をした用のアニメに飛ぶ

右向きの立ち表示に戻る

と左向きの時も同じように表示できるようにしたいです。

左右で別々のアニメを増やすとして、スクリプトの記述はどのように追加したらいいでしょうか?
よろしくお願いします。
2 日付:2012/12/23(日)21:24:30 ID:uqGvQ4UrzKin
色々なやり方があると思います。

───────────────────────────
例えば、

1つのムービークリップ内のタイムラインに、
「左向き用の絵を配置するレイヤー」と「右向き用の絵を配置するレイヤー」の、2つのレイヤーを用意します。
それぞれのレイヤーに、絵を配置します。

左向きの時は、「左向き用の絵」を可視表示にして、「右向き用の絵」を非表示にします。
右向きの時は、「右向き用の絵」を可視表示にして、「左向き用の絵」を非表示にします。

この場合、レイヤー単位で制御することはできないので、絵1つ1つごとにムービークリップ化する必要があります。
また、左向き用、右向き用と判別するために、配置したすべての絵に対してインスタンス名を付ける必要があります。

───────────────────────────
もうひとつ例です。

「右向き用のムービークリップ」と、「左向き用のムービークリップ」を作ります。
2つのムービークリップのタイムラインに、ズレが生じないように絵を配置します。

「2つのムービークリップインスタンス」に、同じ「座標操作」と、同じ「タイムラインのフレーム操作」を行います。

左向きの時は、「左向き用ムービークリップ」を可視表示にして、「右向き用ムービークリップ」を非表示にします。
右向きの時は、「右向き用ムービークリップ」を可視表示にして、「左向き用ムービークリップ」を非表示にします。

この場合、絵1つごとのムービークリップ化と、絵1つごとにインスタンス名を付ける必要がありません。

ただし、ムービークリップ内にタイムライン制御用のスクリプトを内包してしまうと、
2つのムービークリップ内に、同一の処理を記述する必要があり2度手間です。

───────────────────────────
そこで、
タイムライン制御用のスクリプトや、ラベル名などの記述は、「右向き用のムービークリップ」だけに行い、
「左向き用のムービークリップ」には一切記述しません。

「右向き用のムービークリップ」の操作が完了した後で、
「現在のタイムラインのフレーム位置」や「座標」などの必要な情報を取得し
「左向き用のムービークリップ」にセットして反映すると、同じ処理を書かずに済んでいいのではないでしょうか。
3 日付:2012/12/23(日)22:12:40 ID:uqGvQ4UrzKin
>左右で別々のアニメを増やすとして、

1つタイムライン上に、
「左向き用のアニメーション」と「右向き用のアニメーション」を並べておいて
再生する場合ですが、

ラベル名ごとのアニメーションの開始位置を知る必要があります。
AS2.0以前の場合、ラベル名からフレーム位置を取得する機能は無いみたいなので
事前に手打ちで用意しておくか、実際に再生して調べる事になります。

───────────────────────────
例えば、

「右向き用の攻撃アニメ」のラベル名を "attack_r" とします。
「左向き用の攻撃アニメ」のラベル名を "attack_l" とします。

まず、「右向き用の攻撃アニメ」を開始するために、ラベル名 "attack_r" を指定してジャンプします。
この時点で、「右向き用の攻撃アニメ」の開始位置が判明します。例えば、80 とします。

途中で、「左向き用の攻撃アニメ」に変更したいとします。このタイミングで現在の位置を取得します。
 85 とします。85 - 80 = 5 で、「右向き用の攻撃アニメ」は 5 フレーム進んだ事がわかります。

「左向き用の攻撃アニメ」を開始するために、ラベル名 "attack_l" を指定してジャンプします。
この時点で、「左向き用の攻撃アニメ」の開始位置が判明します。例えば、100 とします。
100 + 5 = 105 で、105 フレーム目から再生を開始すれば、「攻撃アニメ」の状態を継続することができます。
4 名前:はる 日付:2012/12/24(月)11:41:21 ID:6YTjjHIBS0Jz File:[ 0.zip ]
回答ありがとうございます。

「右向き用のムービークリップ」と、「左向き用のムービークリップ」を作成する方法で
歩きのアニメを右と左とで別のアニメで動かすことはできたのですが、ジャンプのアニメをするところで
左を向いているのに右のジャンプのアニメが再生されてしまいます。
左を向いているときは左向きのジャンプをさせるためには、
どのスクリプトの間に可視表示や非表示のスクリプトを入れたらいいでしょうか?

CS5で作成したas2.0のファイルをアップロードさせて頂きます。
お手数おかけしますがよろしくお願いします。
このスレッドについて
質問の状態 :
未解決
投稿開始日 :
2012/12/23(日)14:56:31
投稿終了日 :
2012/12/31(月)11:41:51
投稿者 :
はる
レス総数 :
4
スレッド番号 :
104
MondoCollectionSystem ver.0x00020000 by Hakuhin