- Unityでオブジェクトを回転させたいな
その悩みを解決します。
transform.Rotate(x, y, z); | 各軸の周りで回転する |
結論から言うと、Rotateメソッドを使うことで、回転させることができます。
オブジェクトを回転させる方法
- オブジェクト設置
- そのオブジェクトにスクリプトをアタッチ
- 回転させるスクリプトを書く
丁寧に説明していきます。オブジェクトを設置して、スクリプトが設置してある人は、スクリプトを書く部分だけご覧ください。
オブジェクト設置
ヒューマンピクトグラムの画像を使う
このヒューマンピクトグラムさんのこの画像を使わせて、いただきます。自分のオブジェクトがある方は、それを使ってね。
Projectウィンドウに画像をもってきて、Sceneビューに設置
【ダウンロードした素材をProjectウィンドウにドラッグ&ドロップ】→【Sceneビューにドラッグ&ドロップ】
そのオブジェクトにスクリプトをアタッチ
【回転させたいオブジェクト選択】→【Inspector】→【Add Component】→【New Script】→【名前はなんでも良き(自分はRotationにした)】
回転させるスクリプトを書く
X軸の周りで回転させる場合、Y軸の周りで回転させる場合、Z軸の周りで回転させる場合、を書きます。
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軸の周りで回転
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軸の周りで回転
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をかけることによって、減速させています。
この辺は算術演算子と変数を使った計算でも触れてます。
これで減速します。ぜひ、やってみてください。
まとめ
transform.Rotate(x, y, z); | 各軸の周りで回転する |
Rotateメソッドを使えば回転させることができる
もしUnityでゲームを作り始めたばっかの人は、サンプルゲームを作ってみるのはいかがでしょうか。
以上さぎのみや(@saginomiya8)でした。
コメント