▼そのUnityの作業、依頼しませんか?
C#

【Unity2D】C#スクリプトでオブジェクトを回転させる【Rotate】

Unityでオブジェクトを回転させる
  • Unityでオブジェクトを回転させたいな

その悩みを解決します。

transform.Rotate(x, y, z);各軸の周りで回転する

結論から言うと、Rotateメソッドを使うことで、回転させることができます。

オブジェクトを回転させる方法

  1. オブジェクト設置
  2. そのオブジェクトにスクリプトをアタッチ
  3. 回転させるスクリプトを書く

丁寧に説明していきます。オブジェクトを設置して、スクリプトが設置してある人は、スクリプトを書く部分だけご覧ください。

オブジェクト設置

ヒューマンピクトグラムの画像を使う

回転させるオブジェクト

http://pictogram2.com/?p=2195

このヒューマンピクトグラムさんのこの画像を使わせて、いただきます。自分のオブジェクトがある方は、それを使ってね。

Projectウィンドウに画像をもってきて、Sceneビューに設置

Projectウィンドウに画像をもってきて、Sceneビューに設置

【ダウンロードした素材をProjectウィンドウにドラッグ&ドロップ】→【Sceneビューにドラッグ&ドロップ】

 

そのオブジェクトにスクリプトをアタッチ

そのオブジェクトにスクリプトをアタッチ

【回転させたいオブジェクト選択】→【Inspector】→【Add Component】→【New Script】→【名前はなんでも良き(自分はRotationにした)】

回転させるスクリプトを書く

X軸の周りで回転させる場合、Y軸の周りで回転させる場合、Z軸の周りで回転させる場合、を書きます。

X軸の周りで回転

X軸の周りで回転

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

public class Rotation : MonoBehaviour
{

    float rotation_speed = 0; // 回転速度

    // Use this for initialization
    void Start()
    {

    }

    // Update is called once per frame
    void Update()
    {
        // 左クリックされたら回転速度を設定する
        if (Input.GetMouseButtonDown(0))
        {
            this.rotation_speed = 20.0f;

        }
        // 回転速度分回す
        transform.Rotate(this.rotation_speed, 0, 0);

    }
}

if (Input.GetMouseButtonDown(0)){
A
}
左クリックされたら、Aの処理を行う
transform.Rotate(this.rotation_speed, 0, 0);

X軸の周りをfloat rotation_speed変数の値で回転する

「X軸の周り」とか言われても、わかりづらいと思うので自分で実行してみてください。

 

Y軸の周りで回転

Y軸の周りで回転

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

public class Rotation : MonoBehaviour
{

    float rotation_speed = 0; // 回転速度

    // Use this for initialization
    void Start()
    {

    }

    // Update is called once per frame
    void Update()
    {
        // 左クリックされたら回転速度を設定する
        if (Input.GetMouseButtonDown(0))
        {
            this.rotation_speed = 20.0f;

        }
        // 回転速度分回す
        transform.Rotate(0, this.rotation_speed, 0);

    }
}

if (Input.GetMouseButtonDown(0)){
A
}
左クリックされたら、Aの処理を行う
transform.Rotate(0, this.rotation_speed, 0);

Y軸の周りをfloat rotation_speed変数の値で回転する

「Y軸の周り」とか言われても、わかりづらいと思うので自分で実行してみてください。

 

Z軸の周りで回転

Z軸の周りを回転

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

public class Rotation : MonoBehaviour
{

    float rotation_speed = 0; // 回転速度

    // Use this for initialization
    void Start()
    {

    }

    // Update is called once per frame
    void Update()
    {
        // 左クリックされたら回転速度を設定する
        if (Input.GetMouseButtonDown(0))
        {
            this.rotation_speed = 20.0f;

        }
        // 回転速度分回す
        transform.Rotate(0, 0, this.rotation_speed);

    }
}

if (Input.GetMouseButtonDown(0)){
A
}
左クリックされたら、Aの処理を行う
transform.Rotate(0, 0, this.rotation_speed);

Z軸の周りをfloat rotation_speed変数の値で回転する

「Z軸の周り」とか言われても、わかりづらいと思うので自分で実行してみてください。

これが一番使いますね。

あなたがやりたいこともこれだと思います。

徐々に減速させるには

Z軸の周りで回転する場合のスクリプト例です。とうぜん、X軸・Y軸の周りを回転させるときでも同じように、減速できます。

減速させるスクリプト

減速させるよ

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

public class Rotation : MonoBehaviour
{

    float rotation_speed = 0; // 回転速度

    // Use this for initialization
    void Start()
    {

    }

    // Update is called once per frame
    void Update()
    {
        // 右マウスが押されたら回転速度を設定する
        if (Input.GetMouseButtonDown(0))
        {
            this.rotation_speed = 20.0f;

        }
        // 回転速度分回す
        transform.Rotate(0, 0, this.rotation_speed);

        // 減速させる
        this.rotation_speed *= 0.98f;

    }
}

this.rotation_speed 変数に0.98をかけることによって、減速させています。

この辺は算術演算子と変数を使った計算でも触れてます。

算術演算子と変数を使った計算
【Unity&C#】算術演算子と変数を使った計算【基本知識】【Unity&C#】算術演算子と変数と算術演算子を使って、スクリプトを書きます。インクリメントとデクリメント演算子とちょっと便利な演算子を使って計算もちょっとします。...

これで減速します。ぜひ、やってみてください。

まとめ

transform.Rotate(x, y, z);各軸の周りで回転する

Rotateメソッドを使えば回転させることができる

もしUnityでゲームを作り始めたばっかの人は、サンプルゲームを作ってみるのはいかがでしょうか。

Unityサンプルゲーム
【Unity2D&3Dサンプルゲーム】動画よりわかりやすく記事でゲームを作ろう【チュートリアル】【Unity2D&3Dサンプルゲーム・チュートリアル】Unityにおいてのサンプルゲームの作り方が書いてある記事って少ないですよね。そこで当サイトUnishar(ユニシャー)が動画よりわかりやすいサンプルゲームを無料で提供します。...

以上さぎのみや(@saginomiya8)でした。明日からも一生無双でやったりましょう。

ABOUT ME
さぎのみや
さぎのみや
超書手。現在はUnityメディア「ユニシャー」の運営とゲーム開発がメインです。Unity、ライティング関係のお仕事お待ちしております。 >>詳しいプロフィール >>Amazonほしいものリスト
【Unity3D】新しいサンプルゲーム(チュートリアル)を作りました!!!
Unity有料サンプルゲーム

「Unityで3Dゲームを本格的に作っていきたい!」という人におすすめのチュートリアルとなっています。

画像のようなゲームの作り方を販売しています。色々と応用できるサンプルゲームとなっています。ぜひ、作ってみてください。

詳細
>>【Unity3Dサンプルゲーム・チュートリアル】「フリスビーを犬に届けよ!」の概要

>>BOOTHでこのチュートリアルを見る

【RT・フォローであなたのスキルが上がる】

シェアフォローする

さぎのみやのモチベが上がる

コンテンツの質が上がる

あなたの能力も上がる

あなたの
Twitterでのシェア

であなたの能力が上がります。

>>さぎのみやのツイッター(@saginomiya8)

 

COMMENT

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください