Unityでゲーム、アプリ開発

Unityで初めてゲームやアプリを作る人のための支援ブログです。

Unity オブジェクトをクリックで回転させて止めてみよう!Unity学習②

今回はオブジェクトを自動で回転する方法とクリックして回転して
右クリックで止める方法の2つを紹介しています。

※動画での説明が好みの方は下記動画をご覧ください。
ブログ記事での説明がいい方はそのまま読み進めてください。

youtu.be

オブジェクトをクリックで回転させて止めてみよう!

f:id:Phoenix9056:20200420144105p:plain

と言う事でこんばんは!
いつも元気なゆうきやんです!

最近は家事がめんどくさくて、いかに
洗濯物を減らすかって事で、バスタオル2回使います笑笑

では、本題に入っていきましょう。

※UnityでのGameObjectの生成が分からない方は下記記事を
参考にしてください。
Unityのインストールや、必要なソフトのインストールの仕方は、
一番下にある関連記事を参考にしてください。

phoenix9056.hatenablog.com

回転と言えば、ボールを転がす時に回転とか、人が吹っ飛んだ時に回転するとか
昔で言えば、イライラ棒の障害物であったり、
最近で言うとクリスタルのセーブポイントObjectの回転なんかに使えそうですね!

次回は回転するボールでも記述しようかと思います。

まずUnityを起動してください。

f:id:Phoenix9056:20200306032612j:plain

そしたら、Hierarchy内にある+⇨3DGameObject⇨PlaneとCubeを作ってください。
画像に残っているスクリプトなんかは、前回の残骸なので気にしないでください。
Cubeの色が変わっているのは、色を変えています。
※気になれば上にある記事サイトを参照してください。

次にProject+⇨C#Scriptを作成して自分の好きな名前をつけてください。
慣れていない人はRotationと記入、もし変える事が出来なかったらなければマウスの右クリックから
Renameをクリックして変更。
(始めの文字は必ず大文字の英数字で行ってください。)

※Renameで変更した場合C#スクリプトpublic class Rotation : MonoBehaviourの部分の
『Rotation』の部分がUnityで設定したC#の名前が一致していないとエラーになってアッタッチ(この後行うドラッグ&ドロップ)
が出来なくなるので変更してください。

スクリプトには次をコピぺするか同じように書いてください。
スクリプトの作成方法が分からない方は下記記事を参考にしてください。

phoenix9056.hatenablog.com

using System.Collections;
using System.Collections.Generic;
//↑上記二つは必要ありません。

using UnityEngine;

public class Rotation : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        
    }
//↑上記のvoid Start()も必要ないです。
    // Update is called once per frame
    void Update()
    {
        transform.Rotate(0, 0, 360 / 10 * Time.deltaTime);
        //Z軸で10秒間で一周させる
    }
}

f:id:Phoenix9056:20200306040208j:plain

そうしたら書いたスクリプト
Cubeにドラッグ&ドロップしてください。

そうしたら再生ボタンを押して回転するはずです。

ちなみに
transform.Rotate(0, 0, 360 / 10 * Time.deltaTime);
の最初の0はx軸が0(xの方向には回転しません。)
次の0はy軸が0(y軸の方向には回転しません。)
360/10*はz軸の方向に10秒間で回転させると言う意味なので
スクリプトの順番を変えたり、数字を変えて
好きな方向に変えてみるのも面白いですね!


左クリックする度に回転スピードを上げて右クリックで止める方法

次に紹介するのは左クリック、右クリックを使って操作していく
スクリプトを記述していきます。

※次のスクリプトをコピー&ペーストするか自分で書いてみてください。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Rotation : MonoBehaviour
{
    //回るスピードを管理するよ、最初のスピードは0。
    private float mawaru =0f;

    // Start is called before the first frame update
    void Start()
    {

    }

    // Update is called once per frame
    void Update()
    {
        //左ボタンでクリックしたら、mawaruと言うスピード変数に20fのスピードを追加するよ!
        if (Input.GetMouseButtonDown(0))
        {
            mawaru += 20f;
        }
        //もしも、右クリックされたらmawaruと言うスピード変数を0にします。
        else if (Input.GetMouseButtonDown(1))
        {
            mawaru = 0f;
        }
        //x.y軸のスピードは0、z軸にmawaruのスピードをつけるよ!
        transform.Rotate(0, 0, mawaru * Time.deltaTime);


    }

    
}

再生ボタン押して左クリック右クリックで下記のように回るか試してみてください。

f:id:Phoenix9056:20200320170124g:plain



今回はこんな感じで終わりますがもっと詳しい記述を後から加えます。

ご視聴ありがとうございました。


※Unityで学習していきたい方は下記記事を参考にしてください。

phoenix9056.hatenablog.com

※初心者編はこちらになります。

phoenix9056.hatenablog.com

※オススメアセットの紹介やアセットについてはこちらの記事を参考にしてください。

phoenix9056.hatenablog.com