【Unity】Playmaker 公式チュートリアル動画を日本語で読み解く09 - Touch Info①
動画が約38分あり、内容も1~7項目に分かれているので、分割して説明します。
(0:00~24:00)
1. Jump to Touch - タッチしたところにオブジェクトを移動させる
2. Jump and Follow - タッチしたところにオブジェクトが移動し、そのまま指を動かすとそのオブジェクトが付いてくる
3. Place 2D Objects on Tap - タップすると画面上に2Dのオブジェクトが出現する
4. Place 3D Objects on Tap - タップすると画面上に3Dのオブジェクトが出現する
Touch Infoとは
タッチされた場所の保存をこなうもの。
どこをどう何回タッチしたかという情報を詳細に取ることができる。
1. Jump to Touch(タッチしたところにオブジェクトを移動させる)
Hierarchyの作成
ぺらぺらのCubeを置く(とりあえずなんでもいい)
go_TouchManagerを置く(Empty Objectから作る)
go_TouchManagerの中身をPlaymakerで作る
idleを作る
Eventsでtouch_startを作っておくこと。
Variablesのintでfinger_1を作っておくこと。
Moveを作る
Get Touch Info
画面のどこをタッチしている検知するためのもの。
Nomarizeは使える2Dでも3Dでも使えるので、チェックを入れておく。
Global Variablesのfloatでtouched_xとtouched_yを作っておく。
Screen To World Point
ゲームの世界の中でそのタッチしているのがどこなのか翻訳するためのもの。
Global VariablesのVector3でtouched_locationを作っておく。
Set Position
ポジショニングの行動を起こしてくれるもの。
上記のスクショに入りきらなかったため、下に貼り付け。
Wait for No Touchを作る
Eventsでtouch_movingとtouch_endを作っておくこと。
Finger Movingを作る
Eventsでtouch_stationaryを作っておくこと。
End Moveを作る
実は中身はMoveと全く一緒。コピーして作る。
同じものが二つある理由は、その動きをする時の理由が違ってくるから。
実はもっとスマートに一つにすることも可能だけれど、こちらの方が分かりやすい。
Runする
idle状態。真ん中にある。左上の小さな数字は座標。(座標の表示の仕方は説明されてない)
右斜め上をタップすると、ほら移動した!
一度タップした後、そのままなぞっていってもCubeはついてこない。
けれど動きを止めると、その場にやってくる。
2. Jump and Follow(タッチしたところにオブジェクトが移動し、そのまま指を動かすとそのオブジェクトが付いてくる)
Hierarchyを作る
オブジェクトで適当に薄いPlateを置く(私はCubeのZのScaleを0で対応)
→そこに直接PlayMakerをつけてく
Plateの中身を作る
idleを作る
Touch Event
Eventsでtouch_startを作っておくこと。
Variablesのintでfinger_1を作っておくこと。
Moveを作る
Get Touch Info
Global Variablesのfloatでtouched_xとtouched_yを作っておくこと。
NormalizeとEvery Frameにチェックを入れる。
Screen to World Point
Global Variablesのfloatでtouched_xとtouched_y、Vector3でtouched_locationを作っておくこと。
NormalizeとEvery Frameにチェックを入れる。
Set Position
Touch Event
Runする
タップするともちろん移動。
そのまま指をなぞらせるとPlateもついてくる。
3. Place 2D Objects on Tap(タップすると画面上に2Dのオブジェクトが出現する)
タップすると画面上に水色のドット(最大20個)が現れ、タップから一定時間が経つと消えるというアプリを作る。
Hierarchyを作る
Empty Objectをgo_TapManagerとして置く。
適当に色のついたドット的なものをPlate_Dotとして置く。
go_TapManagerを作る
Idleを作る
Eventsでtouch_startを作っておくこと。
Dot Checkを作る
Int Compare
ドットが20個以下の時はどんどん作られて、20個以上になったら作られないようにするという動きを作る。
Global Variablesのintでdot_countを作っておくこと。
Eventsでtoo_many_dotsとadd_dotを作っておくこと。
integer2の20は、20個までドットを表示することができるという指示。
ドットがすでに20以上ある場合は、idleの状態にし、20以下の場合は、追加するというように矢印を引っ張っておく。
一度しかしない動作になるので、EveryFrameのチェックは入れない。
Place Dotsを作る
Get Touch Info
1,2で説明してきたものと同じ。
Global Variablesのfloatでtouched_xとtouched_yを作っておくこと。
Normalizeのみチェックを入れる。
Screen To World Point
こちらも、1,2で説明してきたものと同じ。
Global VariablesのVector3でtouched_locationを作っておくこと。
Normalizeのみチェックを入れる。
上記のスクショに入りきらなかったため、下に続きを貼り付け。
Int Add
新しくできたドットをカウントするために設置。
Create Object
デバイスのパフォーマンスにかなり影響を与えてしまう。複雑なオブジェクトになればなるほど大変なことになるので注意。
Plate_Dotを作る
表示されているドットを消すための処理となる。
Cook Offを作る
一定時間待って次のEventへ移す動き。
Eventsでclean_upを作っておく。
Cleanupを作る
Int Add
dot_countを1つずつ減らしていく動き。
Destroy Self
ドットが消えていくという動き。
これにプラスしてGUI Textでドット数を表示させるという機能もつけていたがあまり説明はなく、それほど重要でもないためそのまま割愛。
Runする
タップするとその場所にドットが出来上がっていく。
そして一定時間経つと消える。
20個までしかドットは出現しないと設定したので、20個しか表示されない。またドットが消えて20個以下になったら、再度タップで増やすことができる。
4. Place 3D Objects on Tap(タップすると画面上に3Dのオブジェクトが出現する)
3で行った内容の3Dバージョンを作る。基本的には同じ構造。
Hierarchyを作る
・Empty Objectからgo_tapManagerを作る。
・3D ObjectのPlaneを敷いておく。
InspectorのTag横にある、LayerでAdd Layerを選択し、platformというものを作り、選択しておく。
go_TapManagerを作る
Idleを作る
Eventsでtouch_startを作っておくこと。
Variables1のintでfinger_1を作っておくこと。
Cube Checkを作る
Global Variablesのintでdot_countを作っておく。(前のものを利用しているので、dot_countになっているが、本当はcube_countの方が分りやすい)
Eventsでtoo_many_cubesとadd_cubeを作っておく。
Integer2を5とする。最大で5個のCubeしか出現しない設定。
Touch Infoを作る
3では2DだったのでX,Yのfloatを利用したが、今回は3DなのでVector3でサクッと設定していく感じ。
Get Touch Info
Global VariablesのVector3でhit_pointを作っておく。
Screen Pick
(上のスクショに入りきらなかったためこちらで別で貼り付け)
この部分が2Dオブジェクトとの大きな差。Screen to World Pointを使わない。
Global VariablesのBoolでraycast_did_hitを作っておく。boolで20個以下であればcubeを追加の判断(Hit Checkの部分)をするため。
Global VariablesのVector3でtouched_locationを作っておく。
Layer Maskを1にしてplatformを設定。platform(Plane)以外ではCubeを作れないようにする。
Hit Checkを作る
Eventsでtouch_endを作っておく。
Place Cubeを作る
int Add
3の時と同じ。
Y軸の0にPlaneを置いているため、0でCubeを作り出すとPlateに半分埋まった状態になってしまうため、0.5浮かせた状態で作り出すために設置。
Create Object
次に作るCube TimerをGame Objectに指定する。
Cube Timerを作る
タップ前の最初の画面では登場しないため、プレハブにする。プレハブ上にPlaymakerもくっついている。
わかりやすいように、Game Sceneにおいてくとこうなる。
Playmakerで作っていく内容は、3のPlate_Dotと全く同じ。
Wait for Cleanupを作る
Eventsでcleanupを作っておく。
Cleanupを作る
Runする
スタート時はPlaneだけ。
タップするたびにCubeが出現。
上限を5個と設定しているので、3のドットのように、これ以上タップしてもCubeは出現しない。自然と消えるのを待って5個以下になると、またタップでCubeが出現。
もちろん指をドラッグさせても何も起きない。
今回は以上。次回、同じ動画の5,6,7を説明します。
次の記事はこちら
前の記事はこちら