PIero
1
私は敵の攻撃を受けると攻撃した敵の方を向きながら逆方向へジャンプするゲームを作っています。
今までは敵の攻撃時に向きに応じた属性を設定し、その属性によってダメージを受けた際のモーションの向きを決めていました。
しかしこの方法は攻撃側とダメージ側で左右別々のステートを用意する必要がありスクリプトが膨れがちでした。
アクションゲームメーカーの仕様上スクリプトやリンクが増えるとパフォーマンスが悪くなります。
そこでバージョン2.0で搭載された機能の「ノックバック」を使えばスクリプトをシンプルに出来るのではと考えましたが上手く設定できません。
ノックバック方向の指示で「左右」を選べば左右には動かせますがアクション設定の「ジャンプを動作を行う」のチェック入れてもジャンプしません。
0.1秒後に別の「ジャンプを動作を行う」のチェックを入れたステートへ移行させましたがそこでもジャンプはしませんでした。
添付画像1枚目はノックバックを適応したステートで2枚目はジャンプをさせたノードです。
ノックバック方向の指示で「打ち上げ」を選んでみましたがどのように設定しても
常に移動方向とスプライトの表示方向が一緒になってしまいます。
以下試した設定です。
設定
・打ち上げ 45℃
・逆方向 オン
・表示方向を移動方向と逆 オン
結果:敵の逆方向を向きながら逆方向へ行く
設定
・打ち上げ 45℃
・逆方向 オン
・表示方向を移動方向と逆 オフ
結果:敵の方を向きながら敵の方へ行く
設定
・打ち上げ 45℃
・逆方向 オフ
・表示方向を移動方向と逆 オン
結果:敵の逆方向を向きながら逆方向へ行く
設定
・打ち上げ 45℃
・逆方向 オフ
・表示方向を移動方向と逆 オフ
結果:敵の逆方向を向きながら逆方向へ行く
設定
・打ち上げ -45℃
・逆方向 オン
・表示方向を移動方向と逆 オン
結果:敵の方を向きながら敵の方へ行く
設定
・打ち上げ -45℃
・逆方向 オン
・表示方向を移動方向と逆 オフ
結果:敵の方を向きながら敵の方へ行く
設定
・打ち上げ -45℃
・逆方向 オフ
・表示方向を移動方向と逆 オン
結果:敵の逆方向を向きながら逆方向へ行く
設定
・打ち上げ -45℃
・逆方向 オフ
・表示方向を移動方向と逆 オフ
結果:敵の逆方向を向きながら逆方向へ行く
「ノックバック」では攻撃した敵の方を向きながら逆方向に吹っ飛ぶ設定はできなのでしょうか?
チュートリアルに書いていた実用例では方向指示を打ち上げにして距離や時間を指定していましたが距離の設定は左右にはありますが打ち上げにはないのでこの設定は出来ません。打ち上げにあるのは初速と速度の与え方だけです。
Baz
2
衝突時の向きは、ノックバックのアクションそのものではなく、状態そのものが関係しているのかもしれません。最初のスクリーンショットでは、[アニメーションの割り当て] 内の状態の [表示方向] が [移動方向] に設定されており、これが毎フレーム向きを再適用して、ノックバックの「移動と逆向きの表示方向」オプションが何をしようとしているかを上書きしている可能性があります。それなら、8通りの組み合わせで結果が2通りしかなかった理由も説明がつきます。
状態の [表示方向] を [顔方向設定を使用] または [移動キー] に変更し、ノックバックの「移動と逆向きの表示方向」オプションをオンにしてみるのはどうでしょうか?これでノックバックが向きの制御を担うようになり、離れていく際に敵の方を向くようになるはずです。
ジャンプについては、[打ち上げ] モードが既にご希望の動作をしている可能性があります。これは初期速度を角度付きで設定するもので、[ジャンプ実行] にチェックを入れなくても、400の速度で45度なら自然に弧を描いて遠ざかるはずです。また、その状態では [重力を無視] をオフにしてみてください。弧を描いて戻ってくるには重力が必要だからです。[左右] の場合、ノックバックは強制移動となるため、それがジャンプを飲み込んでしまっているのかもしれません。
PIero
3
ありがとうございます。
いろいろ試した結果この設定が一番私の普段行っている動作に近いものでした。
・face direction settings
face direction settings 使う
向きの設定 変更しない
ステートの表示方向をface direction settings
・「自身をノックバック」設定
ノックバック方向 左右
逆方向へ移動 オフ
表示方向を移動方向と逆 オン
これは敵の方を向きながら敵の逆へノックバックします。問題はジャンプしないことだけです。
ですがこれをノックバック方向を「打ち上げ」にすると敵の方向関係なくそのままの向きで後ろへ飛んでいきます。
私は「打ち上げ」設定にした時攻撃判定の座標を取得していないのではないかと疑っています。
また「左右」設定でジャンプさせる移動時間0.1秒にし0.2秒後別のジャンプするステートにしてもジャンプしません。ノックバックの強制移動がいつ終わるのかも謎です。
こちら仕様について確認をさせていただきました。
まず、ノックバックとジャンプについてですが、左右ノックバックについては「オブジェクトを移動」と全く同じ処理となります。
これは、到達地点まで強制的に移動をさせる処理になるため、強制移動中はジャンプが無視されますが、終われば正常にジャンプします。
なので、以下の報告は不具合・・・かと思ったのですが
また「左右」設定でジャンプさせる移動時間0.1秒にし0.2秒後別のジャンプするステートにしてもジャンプしません。
こちらは手元では再現しませんでした。試したパターンと結果は以下です。
ジャンプの結果(左右方向・64px)
| 設定 |
ジャンプした時点 |
結果 |
| 到達時間 0.1 秒 |
ノックバックと同時 |
ジャンプしない |
| 到達時間 0.1 秒 |
0.2 秒後 |
約 123px 上がる(普通にジャンプ) |
| 到達時間 0.5 秒 |
0.2 秒後 |
ジャンプしない(移動が終わってもジャンプは出ない) |
| オブジェクトの速度 100%、64px |
0.2 秒後 |
ジャンプしない(移動に約 0.35 秒かかっていたため) |
何らかの理由で、強制移動が終わる前にジャンプステートに突入していると考えられるのですが、到達時間0.1秒と正しく設定されていたでしょうか。もし正しく設定されているようであれば、ノックバックステートのアクションとジャンプステートへの遷移条件のSSをいただければと思います。
2点目の
ノックバック方向を「打ち上げ」にすると敵の方向関係なくそのままの向きで後ろへ飛んでいきます。
ですが、こちらも再現できませんでした、打ち上げの場合、左下や右下を向く可能性があり、もしかすると斜め方向のアニメを設定していないなどではないかなと思いましたが、いかがでしょうか。
PIero
5
1番の画像が「自身をノックバック」のステート、2番目の画像が疑われていたリンク条件、3番目の画像がその先のジャンプする予定のステート、4番目の画像その次のリンクですが分かりやすくするためリンクしないように設定しています。必ずジャンプのステートで止まるようにしました。
結果は敵の方を向いて敵の逆に進むがジャンプはしない。
敵側にキーを入れながら接触すると敵や自分の位置を問わず必ず右側を向いて左へジャンプする。
移動時間を0.2にしてリンクの経過時間を0.4にしてみましたが結果は同じでした。
ジャンプのステートの画像を「遷移前のアニメーション維持」から別のアニメを指定した場合
一瞬敵側を向きますがすぐに敵自分の位置を問わず必ず右側を向いて左へジャンプします。
「打ち上げ」に関しては方向のアニメ設定を知らなかった為、設定することで正常に機能したように思います。
とりあえず「左右」の仕様が不明瞭で不安なので「自身をノックバック」はなるべく使わずどうしても必要な時は「打ち上げ」だけを使用するようにしてみます。
正しく設定されているように見えますね。
ステート007に設定されている「表示方向に移動」が影響しているのかもしれない、と思いました。
こちらについては、「従来通り」であればジャンプは機能しますが、
新しく追加した「強制移動(オブジェクトの速度)」「到達時間で強制移動」の設定はノックバックと同じく強制移動方式のため「ジャンプ」は効かなくなります。
PIero
7
ありがとうございます。「表示方向に移動」の設定は従来どおりです
また「表示方向に移動」を実行しないにしても攻撃を受けたキャラクターが一瞬敵の方を向いた後、必ず右側を向きます。
不思議なことにテストプレイの機能でダメージ受ける直前に一時停止し、コマ送りで進めると敵の方を向いたキャラクターがその後右側を向いてしまうことはありませんでした。
この動作は一時停止を使った時だけでダメージ受けた後コマ送りにしなければ再び必ず右側を向いてしまいます。
「いいね!」 1
こちら頂いた情報をもとに調べたところおそらく原因だろうという内容が判明しました。
ノックバックアクションがFaceDirectionSettingsの値を更新できていなかったため、FaceDirectionSettingsを使う、で正常に向きをとれなくなっていたようです。
こちら修正を配信させていただきましたのでよろしければご確認をいただければと思います。