XYZ軸をキッチリ移動させる
最終更新 : 2020/03/21
最終更新 : 2020/03/21
3D制作環境ではX/Y/Z軸の座標を扱います。編集の際には対象物を真正面から捉えたり真上から捉えたりして1つの軸を無効化して、残った2軸をベースに操作することが多いです。
ドリームズにおいては正面視点や天井視点といったものはないものの、軸を分かりやすくして作業をする方法は用意されています。
今回はオブジェクトを移動させるという観点で見てみたいと思います。
もったいぶりましたが、「ガイド > キッチリ移動」をONにするだけです。軸の基準として、ローカルスペースとグリッドスペースを選択できます。
「キッチリ移動」……そのものずばりのネーミングです。
この機能を使うと、カメラから見て上下左右に対してだけ移動できます。
グリッドスペース(デフォルト)の場合
また移動中に視点を変更すれば3軸目(奥行き)の方向にも動かせます。
動かした分だけラインが伸びます。
どの軸方向にどれだけ動かしたか分かりやすいですね。
ローカルスペースをONにすれば、オブジェクトの向きを基準に動かせます。キーフレームで直進運動を記録したい時に便利です。
ローカルスペースの場合。
直線的なデザインやパズルゲームを作る時は基本的にONにしておいて良いような、便利な機能ですね。
ちなみに筆者はONにするのが面倒なのと、キッチリそろってなくても気にならない性格なので、ほとんど使っていません。
今回の記事はこれで終わろうかと思ったのですが、もしかしたらゲーム中に、オブジェクトをチップで掴んで軸をきっちり移動させたい、なんて思う人もいるかもしれません。
ということで深掘りしてみます。気になる人だけ続きをお読みください。
ゲーム中には「キッチリ移動」の機能は使えませんので、ロジックを自作する必要があります。
分かりやすい方法としては、オブジェクトに「アドバンスムーバー」を持たせて、操作に応じて「○軸のスピード」に値を渡すことでしょう。オブジェクトごとにマイクロチップを貼り付けないといけないのが手間だとは思います。
正直なところチップを使わなければ簡単です。XYZを方向キーに割り振って押させるとか。
とりあえず今回は難しい方、オブジェクトをチップで掴んで動かすという条件にこだわって、作り方をざっくり説明したいと思います。
自分で作れそうだ、という方も次の注意点だけ読んでいってください。
プレイヤーによって、チップの操作方法が異なる点に注意が必要です。メインメニューのボタン設定にて、「モーションセンサーの機能 or スティック」を指定できます。
アーリーアクセス版時代はスティックが選べませんでした。
この項目はクリエイト中だけでなく、他人のゲームを遊んだ時にも適用されます。そのゲーム中にチップを動かす場面があれば、操作方法としてそのまま適用されるということです。
ですので、クリエイター側の観点とすれば、ゲーム中にプレイヤーにチップを操作させるつもりなら、モーション操作でもスティック操作でも、どちらでも遊べるように作った方が良いということです。
ゲームによっては「ぜひともモーション操作してほしい、スティック操作を禁止したい」ということもあると思いますが、そういったこだわりがないのなら両対応できるようにした方が良いでしょう。
具体的にはどのように作れば良いかというと、2つの操作方法に対応したロジックを作っておいて、それぞれをマイクロチップにまとめるのが良いでしょう。
そしてダイアログ表示マシンを使って、ゲーム開始時に「あなたの操作環境はモーション・スティックどちらですか?」と質問を表示するのです。その回答に応じて、対応するマイクロチップ、片方だけを有効にすれば良いです。
注意点は以上となります。一番確実、簡単なのは、モーション操作でもスティック操作でも、ロジック的には関係ないゲームを作ることですが、そうはいかない時が、もしかしたらやってくるかもしれませんので。
ということで、これ以降はモーション操作版のロジックをざっくり記載します。読むよりは自分が思うように組んでいった方が早いですので、行き詰まった時に参考にする程度にしてください。
そんな感じですから参考画像はほぼありません。悪しからず。
まず、この例で作ろうとしているものの特徴をまとめておきます。
こんな感じのものを作っていきます。今回はオブジェクトの角度(向き)を変更する機能は考慮しません。
メインカメラを配置します。カメラを増やすのはロジックがある程度まとまってからにしましょう。
手直しメニューで「チップの働き」を「掴み」に設定します。移動OKはOFFのままです。
この後は、オブジェクトに移動機能を作り込んでいきます。オブジェクトにマイクロチップを貼り付けたら、L1+×で開いて、そこにこれから記載するガジェットを配置していきます。
白い仕掛けを見て、XYZがどの方向か把握します。「ローカルスペース」を使うかどうかは、このオブジェクトにどう動いてほしいかで決めます。
移動スピードは3軸とも0に設定しておき、インプットポートからスピードを設定します(後述)。
強度・ダンピングは100%としておき、あとから操作性を見て調整します。
手直しメニューを開いて、「チップの掴み」アウトプットを利用します。このアウトプットからは、チップの引っ張りの強さに応じた0~1の強弱シグナルが発生します。
もし「強く引っ張れば速く動く」という機能を作りたいなら、このシグナル値を計算式に組み込めば良いということです。
ちなみに「掴み」アウトプットは0か1かのON/OFFシグナルですので、引っ張りの強さを意識しないならこちらでも良いと思います。
モードは「リモート」とします。
掴みセンサーの「チップの掴み」から、NOTゲートを通してコントロール無効ポートにつなぎます(掴んでいないならコントロール無効)。
タブの2ページ目「モーションセンサー」からスプリッターにつなぎます。
モーションセンサーの値がABCに分かれます。ABCのポートからコントローラーを傾けた数値を取得できますので、まずはナンバー表示マシンを使って、ABCがそれぞれどの傾きに対応しているのかチェックしましょう。
たぶん、Cが上下、Bが左右になるはずです。Aは奥行きに関する数値っぽいです。Moveコンだと大きく反応するかもしれませんが、パッドだとよく分かりませんでした。一度チェックしてみてください。もしかしたらB、CにAの値を組み合わせることでより操作向きの値が作れるかもしれません。
傾きの数値とカルキュレーターを使って、速度値を計算しましょう。できあがった値はアドバンスムーバーの各軸のスピードインプットへ流します。
期待と反対方向に動く場合はマイナス1を掛けて調整します。その他微調整については後述します。
アドバンスムーバーの「○軸のスピード」につながっているそれぞれのワイヤーにノードをかませて、このノードの電源を制御します。
特定ボタンを押してる間はこのノードだけ電源ON、特定カメラでは奥行きノードも電源ONという感じです。
「シグナルを反転する」より転載。一番上のワイヤーが「ノードをかませて電源制御」している例です。
掴んだ瞬間に移動してしまう、上下だけに動かしているつもりが左右にも動いてしまう、といった操作性の不満が出るはずです。
コントローラーセンサーのコントロール無効箇所、また速度計算の箇所にカルキュレーターを追加して、「値がXより大きい時だけ有効にする」といった判定を入れることで調整できます。
以上でモーション操作への対応が完了です。
マイクロチップを複製したら、モーションセンサーの値ではなく左スティックの値を使うように修正します。スプリッターから出てくる結果も変わるので、速度値の計算方法も見直しましょう。
ちなみに左スティックはローカル版とシーン全体版がある(2ページ目か3ページ目か)ので、実際に動かして決めてください。
ということで、中身が単純でも数値の調整はかなり大変です。
目的が「オブジェクトをキッチリした位置に移動させる」というだけなら、前述の通り方向キーで移動させる(チップは使わない)とか、ざっくり移動させたら自動的にキッチリした位置に吸いつくようにするとか、実現方法はたくさんあると思います。
ゲーム性が変わらない限りは、より簡単にクリエイトする方法を考えたいところです。作業前にじっくり時間をかけて考えることで、最終的な制作時間が短縮されると思います。
溟犬一六(めいけんいちろ)。雑種のクリエイター。ハンドル名はガバチョなど