ひつまぶし blog

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

【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とは

f:id:hitsumabushiko:20160113130758j:plain

 タッチされた場所の保存をこなうもの。
どこをどう何回タッチしたかという情報を詳細に取ることができる。

1. Jump to Touch(タッチしたところにオブジェクトを移動させる)

Hierarchyの作成

ぺらぺらのCubeを置く(とりあえずなんでもいい)

go_TouchManagerを置く(Empty Objectから作る)

f:id:hitsumabushiko:20160117131754j:plain

 

go_TouchManagerの中身をPlaymakerで作る

idleを作る

f:id:hitsumabushiko:20160117131852j:plain

Eventsでtouch_startを作っておくこと。
Variablesのintでfinger_1を作っておくこと。

Moveを作る

f:id:hitsumabushiko:20160117132520j:plain

Get Touch Info

画面のどこをタッチしている検知するためのもの。

Nomarizeは使える2Dでも3Dでも使えるので、チェックを入れておく。
Global Variablesのfloatでtouched_xとtouched_yを作っておく。

 

Screen To World Point

ゲームの世界の中でそのタッチしているのがどこなのか翻訳するためのもの。

Global VariablesのVector3でtouched_locationを作っておく。

 

Set Position

ポジショニングの行動を起こしてくれるもの。

上記のスクショに入りきらなかったため、下に貼り付け。

f:id:hitsumabushiko:20160117134059j:plain

 

Wait for No Touchを作る

f:id:hitsumabushiko:20160117134500j:plain

Eventsでtouch_movingとtouch_endを作っておくこと。

 

Finger Movingを作る

f:id:hitsumabushiko:20160117135213j:plain

Eventsでtouch_stationaryを作っておくこと。

 

End Moveを作る

f:id:hitsumabushiko:20160117135851j:plain

実は中身はMoveと全く一緒。コピーして作る。

同じものが二つある理由は、その動きをする時の理由が違ってくるから。
実はもっとスマートに一つにすることも可能だけれど、こちらの方が分かりやすい。

 

Runする

idle状態。真ん中にある。左上の小さな数字は座標。(座標の表示の仕方は説明されてない)

f:id:hitsumabushiko:20160117140730j:plain

 

右斜め上をタップすると、ほら移動した!

f:id:hitsumabushiko:20160117140736j:plain

 

一度タップした後、そのままなぞっていってもCubeはついてこない。

f:id:hitsumabushiko:20160117140743j:plain

 

けれど動きを止めると、その場にやってくる。

f:id:hitsumabushiko:20160117140750j:plain

 

2. Jump and Follow(タッチしたところにオブジェクトが移動し、そのまま指を動かすとそのオブジェクトが付いてくる)

 Hierarchyを作る

オブジェクトで適当に薄いPlateを置く(私はCubeのZのScaleを0で対応)
→そこに直接PlayMakerをつけてく

f:id:hitsumabushiko:20160117224338j:plain

 

Plateの中身を作る

idleを作る

f:id:hitsumabushiko:20160117224558j:plain

Touch Event

Eventsでtouch_startを作っておくこと。
Variablesのintでfinger_1を作っておくこと。

 

Moveを作る

f:id:hitsumabushiko:20160117224604j:plain

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

f:id:hitsumabushiko:20160117224606j:plain

 

Touch Event

f:id:hitsumabushiko:20160117224609j:plain

 

Runする

タップするともちろん移動。

f:id:hitsumabushiko:20160117224614j:plain

 

そのまま指をなぞらせるとPlateもついてくる。

f:id:hitsumabushiko:20160117224631j:plain

 

3. Place 2D Objects on Tap(タップすると画面上に2Dのオブジェクトが出現する)

タップすると画面上に水色のドット(最大20個)が現れ、タップから一定時間が経つと消えるというアプリを作る。

 

Hierarchyを作る

Empty Objectをgo_TapManagerとして置く。
適当に色のついたドット的なものをPlate_Dotとして置く。

f:id:hitsumabushiko:20160119074721j:plain

go_TapManagerを作る

Idleを作る

f:id:hitsumabushiko:20160119074811j:plain

Eventsでtouch_startを作っておくこと。

 

Dot Checkを作る

Int Compare

ドットが20個以下の時はどんどん作られて、20個以上になったら作られないようにするという動きを作る。

f:id:hitsumabushiko:20160119074847j:plain

Global Variablesのintでdot_countを作っておくこと。
Eventsでtoo_many_dotsとadd_dotを作っておくこと。

integer2の20は、20個までドットを表示することができるという指示。

ドットがすでに20以上ある場合は、idleの状態にし、20以下の場合は、追加するというように矢印を引っ張っておく。

一度しかしない動作になるので、EveryFrameのチェックは入れない。

Place Dotsを作る

f:id:hitsumabushiko:20160119075204j:plain

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のみチェックを入れる。

 

上記のスクショに入りきらなかったため、下に続きを貼り付け。

f:id:hitsumabushiko:20160119075242j:plain

Int Add

新しくできたドットをカウントするために設置。

 

Create Object

デバイスのパフォーマンスにかなり影響を与えてしまう。複雑なオブジェクトになればなるほど大変なことになるので注意。

Plate_Dotを作る

表示されているドットを消すための処理となる。

Cook Offを作る

f:id:hitsumabushiko:20160119075535j:plain

 一定時間待って次のEventへ移す動き。
Eventsでclean_upを作っておく。

Cleanupを作る

f:id:hitsumabushiko:20160119075752j:plain

 Int Add

dot_countを1つずつ減らしていく動き。

 

Destroy Self

ドットが消えていくという動き。

 

これにプラスしてGUI Textでドット数を表示させるという機能もつけていたがあまり説明はなく、それほど重要でもないためそのまま割愛。

Runする

タップするとその場所にドットが出来上がっていく。

f:id:hitsumabushiko:20160119080017j:plain

 

そして一定時間経つと消える。

f:id:hitsumabushiko:20160119080028j:plain

 

20個までしかドットは出現しないと設定したので、20個しか表示されない。またドットが消えて20個以下になったら、再度タップで増やすことができる。

f:id:hitsumabushiko:20160119080219j:plain

4. Place 3D Objects on Tap(タップすると画面上に3Dのオブジェクトが出現する

3で行った内容の3Dバージョンを作る。基本的には同じ構造。

Hierarchyを作る

・Empty Objectからgo_tapManagerを作る。

・3D ObjectのPlaneを敷いておく。
InspectorのTag横にある、LayerでAdd Layerを選択し、platformというものを作り、選択しておく。

f:id:hitsumabushiko:20160119092250j:plain

go_TapManagerを作る

Idleを作る

f:id:hitsumabushiko:20160119092253j:plain

Eventsでtouch_startを作っておくこと。

Variables1のintでfinger_1を作っておくこと。

Cube Checkを作る

f:id:hitsumabushiko:20160119092333j:plain

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でサクッと設定していく感じ。

f:id:hitsumabushiko:20160119092501j:plain

Get Touch Info

Global VariablesのVector3でhit_pointを作っておく。

 

Screen Pick
(上のスクショに入りきらなかったためこちらで別で貼り付け)

この部分が2Dオブジェクトとの大きな差。Screen to World Pointを使わない。

f:id:hitsumabushiko:20160119092508j:plain

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を作る

f:id:hitsumabushiko:20160119093525j:plain

Eventsでtouch_endを作っておく。

 

Place Cubeを作る

f:id:hitsumabushiko:20160119093656j:plain

int Add

3の時と同じ。

 

Vector 3 Add XYZ

Y軸の0にPlaneを置いているため、0でCubeを作り出すとPlateに半分埋まった状態になってしまうため、0.5浮かせた状態で作り出すために設置。

 

Create Object

次に作るCube TimerをGame Objectに指定する。

 

Cube Timerを作る

タップ前の最初の画面では登場しないため、プレハブにする。プレハブ上にPlaymakerもくっついている。

f:id:hitsumabushiko:20160119094330j:plain

わかりやすいように、Game Sceneにおいてくとこうなる。

f:id:hitsumabushiko:20160119094436j:plain

 

Playmakerで作っていく内容は、3のPlate_Dotと全く同じ。

Wait for Cleanupを作る

f:id:hitsumabushiko:20160119094501j:plain

Eventsでcleanupを作っておく。

Cleanupを作る

f:id:hitsumabushiko:20160119094521j:plain

Runする

スタート時はPlaneだけ。

f:id:hitsumabushiko:20160119094726j:plain

 

タップするたびにCubeが出現。

f:id:hitsumabushiko:20160119094731j:plain

 

上限を5個と設定しているので、3のドットのように、これ以上タップしてもCubeは出現しない。自然と消えるのを待って5個以下になると、またタップでCubeが出現。

f:id:hitsumabushiko:20160119094735j:plain

 

もちろん指をドラッグさせても何も起きない。

f:id:hitsumabushiko:20160119094849j:plain

 

今回は以上。次回、同じ動画の5,6,7を説明します。

 

 次の記事はこちら 

前の記事はこちら

Unityで神になる本。

Unityで神になる本。