この記事ではUnityでオブジェクトを回転させてゲームを作るアイデアをいくつか書いていきます。
Unityでオブジェクトを回転させる方法はいくつかあります。
しかしこのC#スクリプトを書けばこう動きます~と説明されてもそれが実際のゲームの中でどのように動くのかイメージしづらいことも多いかと思います。
そこでそれらのスクリプトを使ってどんなことができるか?というアイデアを、Unityを使ってきた経験のある私が解説していこうと考えました。
ゲーム開発というとプログラミングのほうから入る人が多いかと思いますが私は3DCGからスタートしました。 そのため解説の際にあまり専門的なワードは使いません。 ですがその分初心者の方にもわかりやすいかと思います
C#のスクリプトも書いていきますがこの記事はスクリプトにどんなものがあるかというよりもスクリプトをどのように使うか、という点にフォーカスしています。
記事を読むとUnityでオブジェクトを回転させてアクションゲーム制作のヒントなどを得られるかともいますのでこれからゲームを作ってみたいと思う方はぜひ読んでみてください。
Unityでオブジェクトを回転させる
ではまずよく使われていてシンプルな以下の方法でオブジェクトを回転させてみましょう。
キューブをUnityのSceneビューに配置しました。
ではこれをひとまず回転させてみましょう。
プロジェクトビューの適当なフォルダ内にC#スクリプトを作成し、transform.Rotate() を使って以下のようなスクリプトを書いてみました。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class rotation_test002 : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
transform.Rotate(new Vector3(0, 0, 2.0f)); //オブジェクトを回転させる
}
}
transform.Rotate(new Vector3(0, 0, 2.0f)); これがZ方向を軸として回転させるスクリプトです。
上記のスクリプトを先ほどのキューブにアタッチしてプレビューさせます。
これでオブジェクトが回転するようになりました!
…まぁ、これだけ見てもこれがどうゲーム制作に活かされていくのかわかりづらいですよね。
これだけ見るとただキューブが回転しているだけですが、使い方によってゲームや演出をすることができます。
いくつか例をお見せしたいと思います。
Unityでオブジェクトを回転させる演出とスクリプトの例
ここでは
オブジェクトの回転でゲームステージを演出する
ただオブジェクトを回転させるだけでもその回転させるオブジェクトによってゲームシーンを演出することができます。
例えば、Unityアセットストアでダウンロードした風車のモデル(Medieval Windmill)を使ってみます。
この風車は無料アセットです。興味のある人は使ってみましょう。
上記のように風車モデルを3つ、ほかに木、岩、空、フォグ…といろいろオブジェクトを配置してみました。(すべてアセットストアで無料)
簡単なオープンワールドゲームのような雰囲気にしました。
この風車は建物と風車を分離させることができます。
風車のほうに以下のスクリプトをアタッチします。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class WindmillRotationTest : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
transform.Rotate(new Vector3(0, 0, 0.5f)); //風車を回転させる
}
}
transform.Rotate(new Vector3(0, 0, 0.5f)); で、先ほどのキューブよりはゆっくりと回転させることにしました。
風車が回って、RPGのような世界のどこかの街のような雰囲気を演出してみました。
オブジェクトを回転させてゲームのギミックを作る
次に、オブジェクトの回転でゲームのギミックを動かしてみましょう。
画像のような十字のバーにスパイクがついている昔のアクションゲームにあったようなベッタベタなギミックを回転させてみましょう。
(これは筆者がBlenderでモデリングしました。)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class RotationTest1 : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
transform.Rotate(new Vector3(0, 0, -0.5f)); //スパイクつきギミックをを回転させる
}
}や
上記のスクリプトをスパイクつきのギミックにアタッチして動かしてみましょう。
風車と同じような回転のスクリプトを今度はY軸で回転するようにしてみました。
するとゲーム中にプレイヤーキャラの進行を邪魔する回転ギミックになります。
当たり判定など設定すると、そのスパイクの付いたギミックを避けながらゴールを目指すゲームのようになりました。
やっていることは至極単純ですがこれだけでちょっとゲームっぽくなってきたような気がします。
Unityでプログラミングを始めたばかりのころはこのようなシンプルな仕掛けでも作ってみると面白いものです。
プログラミング学習で疲れた時には遊び感覚で作ってみてもいいでしょう。
キャラクターの移動を回転で演出する
地味ですが実はキャラクターの移動の際にも少し回転しています。
以下のようなスクリプトでキャラクターが向きを変える際に回転するようにしています。
これがないと急に方向転換したようになってしまうため、その動きの不自然さを多少なりとも緩和するために設定しました。
下記の記事内でやっているのと同じスクリプトです。
Unityでキャラクターの攻撃アニメーションを作りたいんだけどどうすればいいのかな。 当たり判定、Collider(コライダー)っていうのを設定するって聞いたけどどうすればいいんだい? アクション[…]
上記の記事のスクリプト内の以下の部分で移動と方向転換の際の回転の動きができるようにしました。
if (target_dir.magnitude > 0.1) { Quaternion rotation = Quaternion.LookRotation(target_dir); transform.rotation = Quaternion.Lerp(transform.rotation, rotation, Time.deltaTime * smooth); }
カメラ移動にも回転のスクリプトを使用する
サードパーソンのアクションゲームのようなカメラを設定するときにも回転は使えます。
上記のカメラの動きはこちらのyoutubeの動画を参考にして作ってみました。
カメラがプレイヤーキャラの周りを回転している様子がわかると思います。
シネマシーン(Cinemachine)でもカメラの動きは設定できますが、こうした方法でもカメラの動きをコントロールできるのは面白いですね。
オープンワールドのアクションRPGなんかも作れてしまいそうです。
Unityでオブジェクトを回転させることができればあなたの作るゲームがもっと楽しくなる!
今回はUnityでオブジェクトを回転させてす方法とそれによってゲームを作るアイデアをいくつか書いてみました。
- transform.Rotate()でオブジェクトを回転させる方法
- オブジェクトの回転を使った演出
- 回転でゲームのギミックを動かす例
- キャラを動かす方法
- 回転でカメラ操作する方法
単純に回転させる機能がある、こういうスクリプトがある、と示されただけですとよくわからない場合が多いかもしれません。
そこで演出など考えることで実際に同ゲームを作ることができるかイメージもしやすいかと思います。
そしてそのヒントは開発経験者に聞いたり、実際にリリースされているゲームの中に非常にたくさんあるものです。
今まであなたがプレイしてきたゲームを観察してみて、いろいろなアイデアを探してみましょう!