【解決済み】砂川氏のDynamicMotionMZでウェイトをかけたい

ジェイ
記事: 16
登録日時: 2020年10月19日(月) 22:28

【解決済み】砂川氏のDynamicMotionMZでウェイトをかけたい

投稿記事by ジェイ » 2020年10月19日(月) 23:32

http://newrpg.seesaa.net/article/477190386.html
こちらのプラグインについて

ご本人に質問したのですが回答を頂けなかったのでこちらで質問させてください。
プラグインを導入して一発パンチを撃ってから時間を数秒開けてもう一発撃つという風にモーションを設定したいのですが画像のように間に待機のコードを入れても間髪入れずに2発目を殴ってしまいます。
サイトの説明文を見る限りだとこれで数秒待機状態になるはずなのですが上手くいきません。

もしかしたらコード自体が間違っているのかと思いwaitで試してみましたが同様でした。
他にプラグインを入れていない状態でも同じでしたので競合ではないと思います。

もし方法が分かる方が居ましたらどのように記載すれば良いのか教えて頂けないでしょうか?
添付ファイル
WS000006.JPG
最後に編集したユーザー ジェイ on 2020年10月20日(火) 22:35 [ 編集 1 回目 ]

アバター
アーヴェル
記事: 48
登録日時: 2019年5月18日(土) 12:02

Re: 砂川さんのDynamicMotionMZでウェイトをかけたい

投稿記事by アーヴェル » 2020年10月20日(火) 12:34

こんにちは!
MVでは結構触っていたのですが、MZに入ってまだあまり触っていなかったので、
復習がてら作ってみました。そのままメモ欄に張り付ければ動くと思います。


<D-Motion:thrust> // 突きモーション
ex = b.x + 24 //使用者のモーション終了時のX座標は、エネミーのX座標+24
ey = b.y - b.height / 2 //使用者のモーション終了時のY座標は、エネミーのY座標 - エネミーの高さ/2
</D-Motion>

<D-Animation>
id = 1 // 打撃/物理
delay = 1
</D-Animation>

<D-Motion:thrust> // 突きモーション
delay = 4
</D-Motion>

<D-Animation>
delay = 6
id = 2 // 打撃/エフェクト
</D-Animation>



以下の話は自分もサイトを見たり自分で動かして理解していったものなので、
もしかしたら一部の説明や理解に誤りがあるかもしれない事を先に申し上げておきます。


砂川さんのD系列のプラグインは
<D-Animation/>

の様に最後に / を入れて書き始める記述は砂川さんの定めたデフォルト動作の呼び出し記号です。
つまり、自分で delay = 1 等を設定したい場合は、 / は必要ありません。
というか / があるとデフォルト動作が呼ばれてしまうと思います。

<D-Animation>
のように / を付けずに開始した場合は、
は、</D-Animation>というように〆の記述、コマンドの前に / を付けることで、
一連のモーション・アニメーション部分が終了という事になります。


先程の例で言いますと、

<D-Motion:thrust> // 突きモーション
ex = b.x + 24
ey = b.y - b.height / 2
</D-Motion>

↑これが1つのブロック(便宜上そう呼びます)
で、最初に挙げたモーション例ではD-MotionとD-Animationでそれぞれ2ブロックずつ使いました。

実際のコードがどうなってるかはよく分かりませんが、
ゲーム上の見え方としてはブロックは必ず上から呼ばれるということは無く、
wait等の値によっていつ呼ばれるかが決まります。

例えば下の方にwait の無い記述を入れれば、
動作開始直後に一番下のモーションやアニメーションが呼ばれる事もあり得ます。
モーションとアニメーションも自動で動作タイミングは連動していません。
なので、ブロックごとに考えて、それぞれにwaitを付ける。という考え方が分かりやすいかと思います。

<D-Motion:thrust> // 突きモーション
wait = auto
</D-Motion>

のような記述で、直前モーションやアニメーションの終わりを自動で待つコマンドもありますので、
それを試してみて、納得いかなければ自分で数値を決めるのが良いでしょうか。

それと、
<D-Animation/>
の記述(デフォルト動作)は、MZデータベースで設定された(メモ欄ではない)
アニメーションを呼び出すものですが、どうやら二度は呼び出せない模様です。

複数のアニメーションを呼び出したりする場合は、
<D-Animation>
delay = 6
id = 2 // 打撃/エフェクト
</D-Animation>
のように、デフォルトではなく、自身でidの指定を行って呼び出せば、
望んだ動きが出来るのではないでしょうか。
ジェイ
記事: 16
登録日時: 2020年10月19日(月) 22:28

Re: 砂川さんのDynamicMotionMZでウェイトをかけたい

投稿記事by ジェイ » 2020年10月20日(火) 22:34

アーヴェルさん

すごく丁寧な回答をありがとうございます!
完璧に望んでいた演出が出来ました!
説明もすごく分かりやすくて書いていただいたコードを参考にして色々とやりたいことが出来そうです。

プラグイン制作などに明るくないのでこの手のコードの書き方がどうしても理解できなくて、何が悪いのかすら分からず途方にくれていましたので本当に助かりました。
重ねてありがとうございました!



アーヴェル さんが書きました:こんにちは!
MVでは結構触っていたのですが、MZに入ってまだあまり触っていなかったので、
復習がてら作ってみました。そのままメモ欄に張り付ければ動くと思います。


<D-Motion:thrust> // 突きモーション
ex = b.x + 24 //使用者のモーション終了時のX座標は、エネミーのX座標+24
ey = b.y - b.height / 2 //使用者のモーション終了時のY座標は、エネミーのY座標 - エネミーの高さ/2
</D-Motion>

<D-Animation>
id = 1 // 打撃/物理
delay = 1
</D-Animation>

<D-Motion:thrust> // 突きモーション
delay = 4
</D-Motion>

<D-Animation>
delay = 6
id = 2 // 打撃/エフェクト
</D-Animation>



以下の話は自分もサイトを見たり自分で動かして理解していったものなので、
もしかしたら一部の説明や理解に誤りがあるかもしれない事を先に申し上げておきます。


砂川さんのD系列のプラグインは
<D-Animation/>

の様に最後に / を入れて書き始める記述は砂川さんの定めたデフォルト動作の呼び出し記号です。
つまり、自分で delay = 1 等を設定したい場合は、 / は必要ありません。
というか / があるとデフォルト動作が呼ばれてしまうと思います。

<D-Animation>
のように / を付けずに開始した場合は、
は、</D-Animation>というように〆の記述、コマンドの前に / を付けることで、
一連のモーション・アニメーション部分が終了という事になります。


先程の例で言いますと、

<D-Motion:thrust> // 突きモーション
ex = b.x + 24
ey = b.y - b.height / 2
</D-Motion>

↑これが1つのブロック(便宜上そう呼びます)
で、最初に挙げたモーション例ではD-MotionとD-Animationでそれぞれ2ブロックずつ使いました。

実際のコードがどうなってるかはよく分かりませんが、
ゲーム上の見え方としてはブロックは必ず上から呼ばれるということは無く、
wait等の値によっていつ呼ばれるかが決まります。

例えば下の方にwait の無い記述を入れれば、
動作開始直後に一番下のモーションやアニメーションが呼ばれる事もあり得ます。
モーションとアニメーションも自動で動作タイミングは連動していません。
なので、ブロックごとに考えて、それぞれにwaitを付ける。という考え方が分かりやすいかと思います。

<D-Motion:thrust> // 突きモーション
wait = auto
</D-Motion>

のような記述で、直前モーションやアニメーションの終わりを自動で待つコマンドもありますので、
それを試してみて、納得いかなければ自分で数値を決めるのが良いでしょうか。

それと、
<D-Animation/>
の記述(デフォルト動作)は、MZデータベースで設定された(メモ欄ではない)
アニメーションを呼び出すものですが、どうやら二度は呼び出せない模様です。

複数のアニメーションを呼び出したりする場合は、
<D-Animation>
delay = 6
id = 2 // 打撃/エフェクト
</D-Animation>
のように、デフォルトではなく、自身でidの指定を行って呼び出せば、
望んだ動きが出来るのではないでしょうか。

“MZ:質問” へ戻る