マウスカーソルについて行って、クリックすれば叩く動きをつけてみましょう。
動きを確認しやすいように、ハンマーのようなオブジェクトを作りました。
関連記事:
90°回転して叩くような動き
マウスカーソルについていくオブジェクト
オブジェクトの先端がマウスに向く
回転軸を変えてオブジェクトを回す
ハンマーの準備
Cylinderオブジェクトを作成し、サイズを変更します。
もう一つCylinderオブジェクトを作成して、位置と回転を変更します。
Cylinder(1)をドラッグ&ドロップで、Cylinderの中に入れて、親子関係をつくります。
このようなハンマーが出来上がりました。
追従のしくみとクリックの動作
HammerMove.csを作成して、Cylinderに追加しましょう。
HammerMove.csを記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class HammerMove : MonoBehaviour { private Vector3 mouse; private Vector3 target; private bool isHit; void Start() { isHit = false; } void Update () { mouse = Input.mousePosition; target = Camera.main.ScreenToWorldPoint(new Vector3(mouse.x, mouse.y, 10)); this.transform.position = target; if(Input.GetMouseButton(0) && isHit == false) { StartCoroutine("RodHit"); } } IEnumerator RodHit() { isHit = true; for(int i=0; i<10; i++) { transform.Rotate(0,0,9); yield return new WaitForSeconds(0.01f); } for(int j=0; j<30; j++) { transform.Rotate(0,0,-3); yield return new WaitForSeconds(0.01f); } isHit = false; } } |
ゲームプレイしてみましょう。
カーソルに合わせて動かしつつ、クリックすればハンマーを叩きつけます。
ScreenToWorldPointを使用して、マウス位置をワールド座標(XYZ)へ変換しています。
ハンマーを叩く動きは、コルーチンを使用。
小刻みに0.01秒をはさみ、合計90°になるように、オブジェクトを回転させています。
関連記事:
90°回転して叩くような動き
マウスカーソルについていくオブジェクト
オブジェクトの先端がマウスに向く
回転軸を変えてオブジェクトを回す