【Unity】Playmaker 公式チュートリアル動画を日本語で読み解く09 - Touch Info②
前回の続き(24:00~37:59)
5. Tap to Move - How to "move to tap", in the style of an RPG/RTS - タップしたところにCubeがアニメーション付きで動いていく
6. Conditional Move or Drag - Uses tap count to determine whether to move or drag an object based on the movement of a finger. - 指でなぞった方向にCubeが方向を変えてその場でくるくると回る
7. Draw Dots - Draw 2D objects in a line following the finger motion.
5. Tap to Move - How to "move to tap", in the style of an RPG/RTS(タップしたところにCubeがアニメーション付きで動いていく)
前の記事の4と途中まで作り方はほぼ同じ。
Hierarchyを作る
・Cubeを置く。
・Planeを置く。
InspectorのLayerでAdd Layerでplatformと作り、選択しておく。
・Empty Objectからgo_TapManagerを作る。
go_TapManagerを作る
idleを作る
Eventsでtouch_startを作っておく。
Variablesのintでfinger_1を作っておく。
Touch Infoを作る
Global VariablesのVector3でhit_pointを作っておく。
Screen Pick
(スクショに入り切らなかったため下記に貼り付け)
Global VariablesのBoolでraycast_did_hitを、Vector3でtouched_locationを作っておく。
Layer Maskを1にしてplatformを選択する。
Hit Checkを作る
Eventsでadd_cubeとtouch_endを作っておく。
add_cubeになっているのは、4と同じEvent名を使いまわしているため。move_cubeなどの方が名称としては相応しいかも。
Move Cubeを作る
Vector3 Add XYZ
ここまでが4まで全く一緒。CubeをPlaneに埋め込まさせないためのY軸の0.5。
iTween Move To
(スクショに入り切らなかったので下記に貼り付け。長いので2枚のスクショになっている。)
Cubeの動き、アニメーション部分。
Easy TypeでEase in Out Quadが選択されているが、これが自然でオススメ、とのこと。
Stop On Exitがチェックされているのは、Cubeが動いている際に次のタップがされた時にすぐに次の動きにうつるため。
Touch Event
Cubeがまだ動いている際にタップされた時、そのタップに反応するために設置。
Runする
スタート時は真ん中にCube。
タップすると
その方向にぬめぬめとCubeが移動。
Cubeがその方向に向かっている時に他をタップすると、
方向を変えてこちらにやってくる。
6 - Conditional Move or Drag - Uses tap count to determine whether to move or drag an object based on the movement of a finger.(指でなぞった方向にCubeが方向を変えてその場でくるくると回る)
Hierarchyを作る
・Cubeを置く。
・Empty Objectからgo_TapManagerを作る。
go_TapManagerを作る
idleを作る
Eventsでtouch_startを作っておく。
Wait for Moveを作る
Eventsでtouch_endとtrack_fingerを作っておく。
Variablesのintでfinger_1を作っておく。
Tap Checkを作る
Get Touch Info
ここでしていることは一つ、何本の指でタッチしているか検知すること。
Global Variablesのintでtap_countを作っておく。
Int Compare
指が1本以下だとRotateし、2本以上だとMoveするように設定する。
Eventsでrotateとmoveを作っておく。
Moveを作る
Get Touch Info
Global Variablesのfloatでtouched_xとtouched_y、touched_x_deltaとtouched_y_deltaを作っておく。
通常のStoreは指がどこをタッチしたかを検知するところで、Deltaは指が最後にアップデートした時にどこをタッチしていたか検知するもの。
そのため、Every Frameにもチェックを入れること。
その他のアクション
(スクショに入り切らなかったので下記に貼り付け。)
Eventsでtouch_stationaryを作っておく。
Rotateを作る
Moveとほぼ同じ。Translateの代わりに、Rotateを使う。
その他のアクション
(スクショに入り切らなかったので下記に貼り付け。)
XAngleにtouched_y_deltaが、YAngleにtouched_x_deltaが入っているので注意。
Runする
スタート時は正面を向いたCube。
指を動かす方向にCubeもくるっと動く。
ぐりぐり指でなぞっても、Cubeも繊細に感知してくるくる回ります。
7 - Draw Dots - Draw 2D objects in a line following the finger motion.()
Hierarchyを作る
・Plate_Dotを置く。(SphereのZ軸0でも代用可)
Plate DotがPrefabになっているため、Hierarchyにない。
・Empty Objectからgo_tapManagerを作る。
go_tapManagerを作る
idleを作る
Eventsでtouch_startを作っておく。
Variablesのintでfinger_1を作っておく。
Dot Check 1を作る
前回の記事の3で紹介したものと同じ、20個の以下のドットしか画面に出現しないように設定。
Global Variablesのintでdot_countを作っておく。
Eventsでtoo_many_dotsとadd_dotを作っておく。
First Dotを作る
Global Variablesのfloatでtouched_xとtouched_yを、intでtap_countを、Vector3でtouched_locationを作っておく。
その他のアクション
(スクショに入り切らなかったので下記に貼り付け。)
Wait for Moveを作る
Eventsでtouch_endとadd_dotを作っておく。
Trackを作る
Global VariablesのFloatでtouched_x_deltaとtouched_y_deltaを作っておく。
その他のアクション
(スクショに入り切らなかったので下記に貼り付け。)
7以上指が動いたら、次にドットを作るという指示。
Eventsでtouch_stationaryを作っておく。
Dot Check 2を作る
ドットを作るたびにドットの数を確認する必要があるため設置。
Place Dotを作る
その他のアクション
(スクショに入り切らなかったので下記に貼り付け。)
Plate_Dotを作る
動画に紹介はないのだが、前回記事の3のドットを利用とあるため、同じ内容を転載。
表示されているドットを一定時間で消すための処理となる。
Cook Offを作る
Eventsでclean_upを作っておく。
Cleanupを作る
Runする
スタート時は何もない。
指でなぞるとドットが出現。
時間が経つと消えていく。
もちろんなぞらなくても、タップでドットは出現。
素早くスワイプスればその分ドットの間隔も開く。
これでTouch Infoについては以上。
次の記事
前の記事