はじめに
この記事はGWアドベントカレンダーという企画の「VCIアドベントカレンダー GW ver」2日目の記事です。
GWアドベントカレンダー全体についてはこちら↓
10連休向けアドベントカレンダーシステムを作った【個人開発】
VCIアドカレはこちら↓
VCI(Virtual Cast Interactive) アドベントカレンダー GW ver
今日は2日目で、平面ゲームに1つのコントローラーで、相対移動によるカーソルを用意する方法について説明します。
TL;DR
まず何を書こうとしているのかわかりにくいので、動画で示します。
画面上に、操作中のフィールドに右手に持ってる黄色い四角を動かしている間出てくる黒丸について注目してください。
こちらが、フィールドが90度画面が動いても黄色い四角が下に動けば下に右に動けば右に動くようになっています。
移動量計算
移動量=「フィールドのデフォルトからの逆回転量」*「コントローラを掴んだ場所からの移動量」
Movement.lua
Movement = Quaternion.Inverse(Field.GetLocalRotation()) * (Controller.GetLocalPosition() - GrabStart.LocalPosition())
黒丸に移動量を反映
黒丸の位置=初期位置+移動量
locate.lua
RelativeMarker.SetLocalPosition(Const.CTRL_POSITION_CORRECTION + Vector3.__new(Movement.x,Movement.y,0))
あとでもっと詳細に書く