棒状のオブジェクトで、叩くような動作をつけてみましょう。
画面をクリックすれば、90°回転して、すぐに元に戻ります。
関連記事:
回転軸を変えてオブジェクトを回す
Updateの中で1回だけ実行する
マウスカーソルを追従しながらクリックで叩く
オブジェクトの先端をマウスカーソルに向ける
スプリングを使って棒を振るような動き
右回転と左回転をくり返す
クリックのたびに回転を開始・停止
回転の中心を変更
Cylinderオブジェクトを作成し、サイズを変更しました。
このままでは、オブジェクトの中心を軸として回転してしまいます。
回転の中心点を、Cylinderの端に設定しましょう。
空のオブジェクトを作成します。
GameObject(空のオブジェクト)のY座標を-2にします。
GameObjectは、この場所に配置されています。
Cylinderをドラッグ&ドロップして、GameObjectの中に入れ、子オブジェクトとして配置します。
回転後に元の状態へ戻す
HitMove.csを作成して、GameObjectに追加しましょう。
HitMove.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 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class HitMove : MonoBehaviour { private bool isHit; void Start() { isHit = false; } void Update() { if(Input.GetMouseButton(0) && isHit == false) { StartCoroutine("RodHit"); } } IEnumerator RodHit() { isHit = true; for(int i=0; i<90; i++) { transform.Rotate(0,0,1); } yield return new WaitForSeconds(1.0f); for(int j=0; j<90; j++) { transform.Rotate(0,0,-1); } isHit = false; } } |
ゲームプレイしてみましょう。
画面をクリックすると、90°回転して、1秒後に-90°回転します。
Updateの中でも、クリックで1度だけ実行できるように、isHitのフラグを作りました。
回転した後に1秒待つために、コルーチンを使用しています。
回転スタート時、isHitはtrueに、回転が終わればfalseに戻しています。
関連記事:
回転軸を変えてオブジェクトを回す
Updateの中で1回だけ実行する
マウスカーソルを追従しながらクリックで叩く
オブジェクトの先端をマウスカーソルに向ける
スプリングを使って棒を振るような動き
右回転と左回転をくり返す
クリックのたびに回転を開始・停止