2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Unity5の教科書 Chapter 3 学習メモ

Last updated at Posted at 2017-02-04

年明けから Unity5の教科書 で Unity の勉強を始めたので、その学習メモです。

ゲームを作る際の流れ

  1. 画面上のオブジェクトを洗い出す
    • 動かすオブジェクト、動かさないオブジェクトを分けておく
  2. オブジェクトを動かすためのスクリプトを作る
  3. オブジェクトを自動生成するためのスクリプトを作る
  4. UI を更新するためのスクリプトを作る

オブジェクトを動かすスクリプトの作成

Chapter 3 では オブジェクトを動かすためのスクリプトを作る という点を 「マウスボタンを押すとルーレットが回る」という簡単なゲームを作りながら学びました。

マウスボタンの入力をトリガーに処理をおこなう

Input.GetMouseButton, Input.GetMouseButtonDown, Input.GetMouseButtonUp を使ってマウスからの入力を検出することができます。
マウスのボタンが押された・離された、などは各メソッドの返り値(bool)をもとに判別します。具体的には次のように if 文と組み合わせて使います。

if(Input.GetMouseButtonDown(0)) {
    //左ボタンが押されたときの処理
    //      :
}
if(Input.GetMouseButtonDown(1)) {
    //右ボタンが押されたときの処理
    //      :
}
if(Input.GetMouseButtonDown(2)) {
    //中ボタンが押されたときの処理
    //      :
}

上記の例は、ボタンを押すとルーレットが回るというような処理をするときに使えます。ただし Input.GetMouseButtonDown はボタンが押されたフレームのみ true を返すので、ボタンが押され続けていることは検出できません。ボタンが押され続けていることを検出したい場合は、Input.GetMouseButton を使います。

各メソッドが判別できるイベントをまとめると次のようになります。

  • Input.GetMouseButton: ボタンが押され続けているか
  • Input.GetMouseButtonDown: ボタンが押されたか
  • Input.GetMouseButtonUp: ボタンが離されたか

詳細を確認したい場合は以下の公式ドキュメントを参考にしてください。

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

Transform というオブジェクトの位置、回転、スケールを扱うことのできるクラスを利用します。
オブジェクトの回転は Transform.Rotate を使って記述します。

Transform.Rotate(0, 0, 10);

引数は左から x軸の回転量, y軸の回転量, z軸の回転量 です。
上の例では、x軸の回転量,y軸の回転量 は 0、z軸の回転量 は 10 なので、z 軸方向に 10 ずつ回転させることができます。

こちらも詳細は公式ドキュメントを参考にしてください。

オブジェクトの回転をゆっくり停止させる

「マウスボタンの入力をトリガーに処理をおこなう」、「オブジェクトを回転させる」を組み合わせることで、マウスボタンをクリック→ルーレットが回る というところまでは実装ができます。
あとは、ルーレットの停止です。

オブジェクトを回転させる際には Transform.Rotate を使いました。回転量は引数で指定しており、先ほどは z 軸方向に回転させるために、

Transform.Rotate(0, 0, 10);

のように引数を指定していました。回転が止まっている状態というのは以下のように引数がすべて 0 の状態です。

Transform.Rotate(0, 0, 0);

そのため、回転量を徐々に 0 に近づけていくようにすれば、ルーレットの回転をゆっくり停止することができます。

float xRotateSpeed = 10;

void Update() {
    Transform.Rotate(0, 0, xRotateSpeed);
    xRotateSpeed *= 0.96f;
}

例のコードは大分はしょっているのですが、xRotateSpeed を 10 で初期化して、Update 関数の中で 0.96f との乗算を繰り返すことで、徐々に 0 に近づけていくという方法です。

おまけ

MonoDevelop-Unity の vi mode にする方法

  1. Preferences
  2. Text Editor
  3. Behavior
  4. NavigationUse Vi modes にチェック
2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?