LoginSignup
54
53

More than 5 years have passed since last update.

UnityをC#で超入門してみる #5 時間と入力の章

Last updated at Posted at 2014-01-04

UnityをC#で超入門してみる #4 GUIの章
http://qiita.com/hiroyuki_hon/items/af0a52c1cb9e856f32b2
の続きです。

目次 超入門#5 時間と入力の章

時間

 時間を取得してみよう
 時間を表示しよう
 時間に沿って動かしてみよう
 一時停止してみよう
 時間に沿って色を変えてみよう

入力

 入力をしてみよう
 入力でオブジェクトを動かしてみよう
 入力でオブジェクトを生成しよう
 入力でメソッドを呼びだそう
 タッチした場所の座標を取得しよう
 //レイを打とう

時間

時間を取得してみよう

Time.deltaTime を利用することで
前フレームが呼び出されたときからの、経過時間を取得出来ます。
ですので、このTime.deltaTimeを積み上げることで
ゲーム内で時間を取得してみます。
こう書いてみます。

public float timer = 0; 

void Update () {
    timer += Time.deltaTime;
}

timerに時間が貯まっていくのが確認できます。

時間に沿って動かしてみよう

このように書いてみます。
Time.deltaTimeを乗算することで
フレームレートに左右されず一定速度でゲームオブジェクトを動かすことが可能となります。

public float speed = 1;

void Update () {
     transform.Translate(Vector3.up * speed * Time.deltaTime);
}

変数speedを用いることでInspector上から速度の変更がつけられます。

一時停止してみよう

DebugクラスのBreak関数を用います。
Debug.Break(); と書くことでエディタを一時停止出来ます。

    void Start () {
        Debug.Break();
    }

時間に沿って色を変えてみよう

ColorクラスのLerp関数を用います。
だんだん色を変えてみましょう。
数字を変更することで、色の変わるスピードを調整しましょう。

    void Update () {
        renderer.material.color = Color.Lerp(Color.blue, Color.red,   Time.time * 0.5f * 0.1f); 
    }

入力

入力をしてみよう

Input.GetKey()を用いることで入力が取れます。

void Update(){
    if (Input.GetKey(KeyCode.Space))
    {
        Debug.Log("test");
    }
}

で、コンソールにtestが表示されます。
Input.anyKey を用いれば何かのキーとすることが出来ます。

キーが押された瞬間を取りたいのであれば
Input.GetKeyDown()

if(Input.GetButtonDown("Jump")){
Debug.Log("Space");
}

メニューバーから
Edit > Project Settings > Input
で、InputManeger を表示できます。

キーが離された瞬間を確認したい場合は
Input.GetKeyUp() を用います。

マウスの座標を取得するには
例えばこう書きます。

if (Input.GetMouseButtonDown(0))
Debug.Log(Input.mousePosition);

入力でオブジェクトを動かしてみよう

入力によってオブジェクトの操作を行ってみます。
例えばこのようにかくことで、上下、左右に移動を行うことが出来ます。


public float speed = 1.0f; 
    public void Update()
    {
        transform.position += new Vector3
        (Input.GetAxisRaw("Horizontal") * speed * Time.deltaTime,
         Input.GetAxisRaw("Vertical") * speed * Time.deltaTime,
         0);

    }

マウスを押している間、オブジェクトを動かすには例えばこう書きます。
Inspectorのtransに動かしたいオブジェクトをドラッグ&ドロップします。

public class NewBehaviourScript : MonoBehaviour 
{
    public Transform trans;

    void Update ()
    {
        if ( Input.GetMouseButton(0) )
        {
            trans.transform.Rotate(1, 1, 0);
        }
    }
}

入力でオブジェクトを生成しよう

こう書いてみます。

if (Input.GetKeyDown(KeyCode.Space))
        {
            GameObject cube1 = GameObject.CreatePrimitive(PrimitiveType.Cube); 
        }

入力でメソッドを呼びだそう

    int Add(int a, int b)
    {
        int sum = a + b;
        return sum;
    }

    void Update ()
    {
        if (Input.GetKeyDown(KeyCode.Space))
            {
                int j = 2, k = 3;
                int ret = Add(j, k);

                Debug.Log(ret);
            }
    }

タッチした時の座標を取得しよう

例えば以下のように書くことで
タッチ時の座標を取得することが出来ます。
書き換え対象となるGUITextをInspector上でターゲットになるようD&Dします。

次のスクリプトはJavaScriptです。

var targetGuiText :  GUIText;
var targetGuiText2 : GUIText;

var i;
var j;

function Update () {
     if(Input.touchCount > 0){
        if(Input.GetTouch(0).phase == TouchPhase.Began){
          targetGuiText.text = "x="+Input.GetTouch(0).position.x+" y="+Input.GetTouch(0).position.y;

         i = Input.GetTouch(0).position.x;
         j = Input.GetTouch(0).position.y;

         targetGuiText2.text = "i="+ i +" j="+ j ;
          }
          Camera.main.backgroundColor = Color.red;
     }

     else
     {
    Camera.main.backgroundColor = Color.blue;
     }
}

レイを打とう

Physics.Raycastを用いる。

筆者メモ

http://loumo.jp/programming/unity/
http://www.atmarkit.co.jp/fsmart/index/unity_game.html
http://www.atmarkit.co.jp/fsmart/index/unity.html
http://www.4gamer.net/games/032/G003263/20111210004/
https://code.google.com/p/vga-unity/
http://am1tanaka.hatenablog.com/entry/20120229/1330526852
http://naichilab.blogspot.jp/2013/06/unityprefab.html
http://yun.cup.com/unity.html

つづく予定です

現在、画像容量を使いきってしまいコードしか載せられません^^;
UnityをC#で超入門してみる #6

54
53
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
54
53