ひつまぶし blog

無職。全てにおいてレベル1 。なのに今はニューヨークひとりぼっち。おなかすいた・・。

【Unity】Playmaker 公式チュートリアル動画を日本語で読み解く04 - Device Roll

今回の動画は15分以上あるので、長いです。

デバイスを傾けたときに、中の宇宙船も傾くというアプリを作ります。

 

04 - Device Roll(デバイスの回転)

 ロールとは

こうやってデバイスを傾けること。
ボタンが左、頭が右にあるのでこのポジションはLandscape Right。

f:id:hitsumabushiko:20151029025850j:plain

ぐりぐり。

f:id:hitsumabushiko:20151029025903j:plain

 

平衡状態は0。

f:id:hitsumabushiko:20151029025908j:plain

 

右にこの辺りまで傾けると-1。

f:id:hitsumabushiko:20151029025919j:plain

 

左にこの辺りまで傾けると+1。

f:id:hitsumabushiko:20151029025922j:plain

 

全てを数値に当てはめるとこんな感じで表現ができる。

f:id:hitsumabushiko:20151029025925j:plain

 

PlayMakerにてアプリ制作

Space Shipを置く

すでに宇宙船が置いてある・・・。前後左右がわかりやすいオブジェクトで代用できるので、自分でやるときは何かを代わりに置けばよい。

 

(Rotationが動くのをグリグリして確認)

Sceneにある宇宙船を掴んでドラッグしながらグリグリすると、右のInspectorにあるRotationの数値が変化。

縦に動かすと、Xの数値が、横に動かすとYの数値が、宇宙船の羽がグラグラするような感じで動かすと(画面でいうと、丸い玉みたいになってるのに沿って動かす)、Zの数値がそれぞれ変化。

下記は、Z数値が変化している様子。

f:id:hitsumabushiko:20151029030937j:plain

 

Roll_Managerを作る

Empty Objectを置く
Game Object > Create Empty で作って、Roll_Managerと名前を変える。

f:id:hitsumabushiko:20151029031110j:plain

 

FSMを作る(PlayMakerの中身)

① Set Orientationステートを作る
現在デバイスがどっちの向きになっているかを検知する。

アクションブラウザより「Device Orientation Event」を二つ設置し、以下のように設定する。
※orientation_leftとorientation_rightはあらかじめイベントとして作っておく。作り方は過去記事

f:id:hitsumabushiko:20151029031756j:plain

 

② Device Roll LとDevice Roll Rステートを作る
二つのステートは内容は同じ、ただ、左右に注意。

アクションブラウザより「Device Orientation Event」「Get Device Rall」「Convert Float To String」「Set GUI Text」を置いておく。

f:id:hitsumabushiko:20151029033624j:plain 

一つ目のDevice Orientationは先ほどのSet Orientationと同じ働き。向きが変わったら、検知する必要があるため設置。

 

二つ目にある、Get Device Rollをチェック。
Base Orientationはかなり重要。これを間違えるとうまく反応しない。きちんと左右があっていることを確認する。

Store Angleには変数を保存しておくところを設定する。ここではGlobal変数を用意する。

ーーーーーーー

グローバル変数の作り方

⑴ PlayMaker一番右端にある、Variablesをクリック。

⑵ 下部にあるGlobal Variablesをクリック。

f:id:hitsumabushiko:20151029035241j:plain

⑶ 入力して、addを押す。

f:id:hitsumabushiko:20151029035312j:plain

⑷ 注意喚起のポップアップができる時もあるが、OKで問題なし。

GlobalVariables用のフォルダを作りましたよ、と言うお知らせポップアップ。

⑸ できた。簡単。

f:id:hitsumabushiko:20151029035440j:plain

ーーーーーーー

Limit Anglie とSmoothingはどんな動きにしたか個人の好みによるので、お好みで。
ビデオで設定しているSmoothing 2はそれなりにスムーズな模様。

常にアングルの情報を獲得していたいので、Every Frameは確実にチェックを。

 

三つ目にあるConvert Float To Stringと四つ目のGUI Textは以下のように設定。

ただ、この二つは傾きを数値で画面に出すだけのものなので、ただ傾いていることがわかればいいのであれば、設置しなくて問題なし。

ちなみに設置する場合は、GUI Textを画面上に置いておく必要がある。設置の仕方は過去記事

f:id:hitsumabushiko:20151029040149j:plain

device_roll_outputは先ほどのグローバル変数のように、変数として用意する。
が、今回はグローバルでなく、ローカルの変数として用意。
こんな感じで入力して、Addを押す。

f:id:hitsumabushiko:20151029040903j:plain

(ただ、今回の検証だけであれば、正直別に変数であれば、グローバルでもローカルでも問題なし。)

テキストをこんな風に置けたら完璧。

f:id:hitsumabushiko:20151029041441j:plain

Space Shipの中身を作る

FMSを作る
ステートは一つ。その中に、アクションブラウザからそれぞれ下記のように選んで設置。

f:id:hitsumabushiko:20151029042113j:plain

今回も、Convert Flot To StringとSet GUI Textはお好みで。

ship_rollと言うローカル変数も作っておく。(Float)

① 先にSet Rotation

傾いたときに変動するのはYの値のみなので、YAngleのみにship_roll。これでデバイスを傾けると、宇宙船が傾いた動きにをしてくれる。

② Sample Curveの説明

宇宙船が傾く仕様はここで設定!
緑の線をクリックすると、こんなグラフが出る。

f:id:hitsumabushiko:20151029043145j:plain

全体でみると、左は-1.5。右は+1.5。上は50。下は-50の範囲。
左右の数値はまさに上で書いた、ローテーションの位置、上下の数値は角度を表す。


ここで設定されているものは、左は、-1.5、45の位置にポイント。 右は+1.5、-45の位置にポイント。
つまり、-1.5の位置に動かすと、宇宙船が45度傾いて、1.5の位置に動かすと、反対側に45度傾くということ。

 

Sample Curveを設置した直後は緑の線がなく、ブランクになっているが、そこをクリックすればOK。
ちなみに、下の方にある基本の緑の線をどれか選択すれば。線を自分でグリグリ動かすことが可能。(例えば、最初と最後の点をクリックするとペンツールみたいにハンドルが!)

 

デバイスで確認する。

Runの仕方は過去記事に。

f:id:hitsumabushiko:20151029045519j:plain

f:id:hitsumabushiko:20151029045545j:plain

ヌメヌメと傾いてる。

 

もちろん上下を逆にしても、いい感じにくるっと反転して、同じような動きをしてくれる。

  

次の記事はこちら

前の記事はこちら

 

↓Unity全然わからない人への、はじめの一歩にオススメの本

Unity5入門 最新開発環境による簡単3D&2Dゲーム制作

Unity5入門 最新開発環境による簡単3D&2Dゲーム制作

 

 

写真素材のピクスタ