クリックした方向にバットを傾け、スイングする仕組みを作ってみましょう。
クリックのタイミングで、360°回転してバットを振る動きです。
関連記事:
スプリングを使って棒を振るような動き
90°回転して叩くような動き
回転軸を変えてオブジェクトを回す
オブジェクトの先端をマウスカーソルに向ける
バットのオブジェクト
シリンダーを作成し、名前をBatObjectに変更。
サイズと回転、位置を変更します。
BatObjectにリジッドボディを追加し、UseGravityのチェックを外します。
空のオブジェクトを作成します。
名前をBatControlに変更し、回転を変更します。
BatObjectを、BatControlの中に入れ、親子関係をつくります。
BatSwing.csを作成し、BatControlに追加します。
BatSwing.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 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class BatSwing : MonoBehaviour { public Transform target; void Start() { transform.Rotate( 0f, -180f, 0f); } public void TiltChange () { transform.LookAt(target); StartCoroutine("BatRotate"); } IEnumerator BatRotate() { for (int turn=0; turn<36; turn++) { transform.Rotate(0,-10,0); yield return new WaitForSeconds(0.0001f); } } } |
ターゲットに向けて傾きを変える
今回の例では、バットを傾けつつ、360°回転させなければなりません。
ここで、傾きをつけるためのオブジェクトを作成しましょう。
Sphereを作成し、名前をTiltPointに変更。
Sphere Colliderのチェックを外します。
ゲームビューではこのように見えています。
TiltMove.csを作成し、TiltPointに追加しましょう。
TiltMove.csを記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class TiltMove : MonoBehaviour { private Vector3 mousePosition; private Vector3 spherePosition; public GameObject bat; void Update() { if (Input.GetMouseButtonDown(0)) { mousePosition = Input.mousePosition; mousePosition.z = 10.0f; spherePosition = Camera.main.ScreenToWorldPoint(mousePosition); this.transform.position = -spherePosition; bat.GetComponent<BatSwing>().TiltChange(); } } } |
Batのフィールドの中に、BatControlを入れます。
BatControlを選択しましょう。
ターゲットのフィールドに、TiltPointを入れます。
バットを傾けながら振る
ゲームプレイして、クリックしてみましょう。
クリックした座標と対称の位置に、TiltPointが表示されています。
これをターゲットにしてBatControlが傾き、360°回転してスイングしています。
最後に、TiltPointを透明にしましょう。
マテリアルを作成して、名前をToumeiに変更。
Rendering ModeをFadeに変更し、Aの値を0にします。
Toumeiマテリアルを、TiltPointに追加します。
もう一度、ゲームプレイしてみましょう。
クリックした位置に傾けながら、バットを振ります。
関連記事:
スプリングを使って棒を振るような動き
90°回転して叩くような動き
回転軸を変えてオブジェクトを回す
オブジェクトの先端をマウスカーソルに向ける