【Unity】オブジェクトをランダムな位置、角度で配置する【C#】
今回はオブジェクトをランダムな位置に生産する方法をまとめたいと思います。
すでに配置されているオブジェクトを複製して配置する方法もありますが、プレハブから制作する方法を紹介していきます。
ちなみに、プレハブとは設計図のようなものです。多分。
コード内容
では早速コードの方を書いていきます。
using UnityEngine; using System.Collections; public class random : MonoBehaviour { //プレハブを変数に代入 public GameObject cube; void Start () { //オブジェクトの座標 float x = Random.Range(0.0f, 2.0f); float y = Random.Range(0.0f, 2.0f); float z = Random.Range(0.0f, 2.0f); //オブジェクトを生産 Instantiate(cube, new Vector3(x, y, z), Quaternion.identity); } }
Random.Range();は、ランダムな数字を生産することができます。
第一引数で生産する数字の最低値を、第二引数で最大値を指定しています。
今回のコードではfloat型の変数に代入したため0.0~2.0の数字が生産されますが、int型の変数に代入することで、整数のみにすることも可能です。
オブジェクトを生産するInstantiate();は、第二引数に位置をVector3で、第三引数に角度をQuaternionで指定できます。
角度はランダムにしませんでしたが、変更したければ第三引数で指定してください。
プレハブを指定する
さて、スクリプトはこれでOKなのですがこれだけだとどんなプレハブを使うのかがわかりません。
そこで、プレハブを指定しますが今回は用意したプレハブがないので、新しく作ります。
ただの立方体でOKでので、Unityでプレハブにしたいオブジェクトを生産して、それをProjectパネルにドラッグ&ドロップします。
すると、こんな感じでAssetsに追加されます。
ここまでできたら先程書いたスクリプトをクリックしてinpectorパネルからプレハブを指定します。
指定できたらカメラでもなんでもいいので先程書いたスクリプトを適用します。
これで実行してみると...
x,y,zが0~2のランダムな位置にオブジェクトが配置されます!
今回のまとめ
- Instantiate();でオブジェクトを配置できる。
- ランダムにしたい場合はRandom.Range();を使って位置を指定する。
【Unity】ジェンガっぽいゲームを作ってみる
今回から実際にゲームを作っていきたいと思います。
とはいっても何を作るかすら思い浮かばなかったので、自宅の床においてあったジェンガをみて「あ、これでいいじゃん。」とかなり適当に決めてしまいました。
で、作るものは一応決まったのですが、どうやって動かすのか検討がつかない\(^o^)/
とりあえずそれは後で考えるとして()、まずはオブジェクト、つまりジェンガ本体の形だけ作ってしまいます。
こんな感じで 1×3×0.5 のサイズの長方形を積み上げていきます。
めちゃくちゃ時間がかかりそうに思えたのですが、Shift+左クリック+カーソルキーで複数選択 → コピー&ペースト → 座標のみ変更 を繰り返していたら案外はやく終わりました。
見やすくするためのオブジェクト名の変更に多少時間をとられてしまいましたが、
複数の名前を一度に変更する方法が分かってからは大分時間が短縮できました。
【Unity】オブジェクトの名前を一斉に変更する方法 - 現役厨房によるゲーム開発
続きを読む
【Unityってなに?】初めてUnityを使ってみる
今回からUnityを使っていこうと思います。
とはいってもゲーム開発どうこうの話ではなく、まずはいじってみるところからはじめていきますね。
そもそもUnityとはなんぞや?
Unity自体を知らない方はなかなかこのページにたどりつくことはないかとは思いますが、私自身が再確認しておきたいので記述させていただきます。
Unity(別名:Unity3D)とは、統合開発環境を内蔵し、複数のプラットホームに対応する、ユニティ・テクノロジーズが開発したゲームエンジンである。日本法人はユニティテクノロジーズジャパン合同会社。ウェブプラグイン、デスクトッププラットフォーム、ゲーム機、携帯機器向けのコンピュータゲームを開発するために用いられ、100万人以上の開発者が利用している[2]。Unityは主にモバイルやブラウザゲーム製作に使用されるが、ゲーム機及びPCにゲームをインストールすることもできる。このゲームエンジンはC言語/C++で書かれているが、C#、JavaScript、Booで書かれたコードにも対応できる。2005年にOS Xに対応したゲーム開発ツールとして誕生してから、今日ではマルチプラットフォームに対応したゲームエンジンにまで成長した[2]。
by Wikipedia
結局引用しただけですけど;
つまり、
Unityとは様々なプラットフォームに対応している万能なゲームエンジンで、プログラミング言語もいろんなものを使って開発できるよー
みたいな感じですかね(適当)
続きを読む英語すらろくに読めない厨房がゲーム開発を試みる
はじめまして!
私はコードを書いたことすらほとんどない、というか英語すらほとんど読めないよう奴です。
このブログはそんな私がゲーム開発を試み、淡々とその経過を更新していくものになる予定です。
これからしばらくは主にunityなどをいじっていこうと思っています。
私のように「unityとかワケワカメ\('A`)/」レベルの方の参考になれば幸いです。
とりあえずこの記事にはあまり書くことはないので、SEO的にはあまりよくないで気が引けますが
この辺で終わりにして次回の記事から実際にゲーム開発をしていきたいと思います。
これからどうぞよろしくお願いいたしますm(_ _)m