Unity5でゲームオブジェクト実践2

『Cubeを矢印キーで動かす 』までかなり退屈ですが、頑張りましょう。
ここを覚えると目に見えて自由度が上がります。

Unity5でゲームオブジェクト実践2

<<Unity5でゲームオブジェクト実践にもどる

  1. Cubeが素早く前後するスクリプト position
  2. &link_anchor(){Cubeの大きさが変化するスクリプト localScal}
  3. Cubeが回転するスクリプト Rotate
  4. マウスクリック中だけCubeが回転するスクリプト Rotate/Input.GetMouseButton
  5. キーイベント Input.GetKey(~~~)
  6. Cubeを矢印キーで動かす

Unity5でゲームオブジェクト実践3をみる>>
メニューにもどる

Cubeが素早く前後するスクリプト position

transform.position

Vector3 p = new Vector3(0,0,zvalue);
transform.position = p;

using UnityEngine;
using UnityEngine.UI;
using System.Collections;

public class myScript : MonoBehaviour {
    
    float zvalue = 0.1f;

    // Use this for initialization
    void Start () {
        
    }
    
    // Update is called once per frame
    void Update () {
        zvalue += 1f;
        Vector3 p = new Vector3(0,0,zvalue);
        transform.position = p;
        if (zvalue>10) { zvalue = 0; }
        
    }
}


zvalue += 1f; で移動スピードが設定されています。0.1fにするとゆっくり。どんどん加算しています。
if (zvalue>10) { zvalue = 0; } 10以上で初期化


Cubeの大きさが変化するスクリプト localScale

transform.localScale

Vector3 s = transform.localScale;
transform.localScale = s;

ookisa.JPG

using UnityEngine;
using UnityEngine.UI;
using System.Collections;

public class myScript : MonoBehaviour {
    
    float xvalue = 0.01f; //横幅
    float yvalue =-0.01f; //縦幅

    // Use this for initialization
    void Start () {
        
    }
    
    // Update is called once per frame
    void Update () {
        Vector3 s = transform.localScale;
        if (s.x > 3 | | s.y < 0.1) {//sの中のX値をチェック
            xvalue *= -1; }
        if(s.y > 3 | | s.y < 0.1) {//sの中のY値をチェック
            yvalue *= -1; }
        s.x += xvalue;
        s.y += yvalue;
        transform.localScale = s;
    }
}

Cubeが回転するスクリプト Rotate

transform.Rotate

vec = new Vector3(0.1f, 01f, 0.1f);
   transform.Rotate(vec);

mawaru.JPG

using UnityEngine;
using UnityEngine.UI;
using System.Collections;

public class myScript : MonoBehaviour {
    
    Vector3 vec;
    // Use this for initialization
    void Start () {
        
    }
    
    // Update is called once per frame
    void Update () {
        vec = new Vector3(0.1f, 01f, 0.1f);
            transform.Rotate(vec);
        
    }
}



vec = new Vector3(0.1f, 01f, 0.1f); 動かしたい角度をまとめたVector3インスタンス 「ようするに動かしたい角度をまとめたもの」

Rotateメソッド.
transform.Rotateで回転命令。(vec)に動かしたい角度がまとめられているので(vec)分回転してくださいとなる。

マウスクリック中だけCubeが回転するスクリプト Rotate/Input.GetMouseButton

Input.GetMouseButton(0)

using UnityEngine;
using UnityEngine.UI;
using System.Collections;

public class myScript : MonoBehaviour {
    
    Vector3 vec;
    // Use this for initialization
    void Start () {
        vec = new Vector3(0.1f, 01f, 0.1f);
    }
    
    // Update is called once per frame
    void Update () {
        if (Input.GetMouseButton(0)) {
            transform.Rotate(vec);
        }
    }
}


Input.GetMouseButton(0) 左ボタン
Input.GetMouseButton(1) 右ボタン
Input.GetMouseButton(2) 中央ボタン

キーイベント Input.GetKey(~~~)

GetKey 押して間 true
GetKeyUp 離したとき
GetKeyDown 押したとき



アルファベットキー|

KeyCodeA
KeyCodeB
KeyCodeC
KeyCodeD
KeyCodeE



以下同

数字キー (アルファベットキーにあるもの)

KeyCode.Alpha0
KeyCode.Alpha1
KeyCode.Alpha2
KeyCode.Alpha3
KeyCode.Alpha4



以下同

数字キー (テンキー)

KeyCode.Keypad0
KeyCode.Keypad1
KeyCode.Keypad2
KeyCode.Keypad3
KeyCode.Keypad4



以下同


ファンクションキー

KeyCode.F1
KeyCode.F2
KeyCode.F3
KeyCode.F4



以下同

矢印キー ↑↓←→

KeyCode.UpArrow
KeyCode.DownArrow
KeyCode.LeftArrow
KeyCode.RightArrow



以下同

その他のキー

KeyCode.Space
KeyCode.Return
KeyCode.Escape
KeyCode.Tab

キー名をつけるだけなので以下略

Cubeを矢印キーで動かす


using UnityEngine;
using UnityEngine.UI;
using System.Collections;

public class myScript : MonoBehaviour {
    
    
    void Start () {
        
    }
    

    void Update () {
        if (Input.GetKey(KeyCode.UpArrow)) {
            transform.Translate(transform.forward*0.1f);
            }

        if (Input.GetKey(KeyCode.DownArrow)) {
            transform.Translate(transform.forward * -0.1f);
        }

        if (Input.GetKey(KeyCode.LeftArrow)) {
            transform.Translate(transform.right * -0.1f);
        }

        if (Input.GetKey(KeyCode.RightArrow)) {
            transform.Translate(transform.right * 0.1f);
        }
    }
}



if (Input.GetKey(KeyCode.~))で分岐して

上下
transform.Translate(transform.forward* ~);
左右
transform.Translate(transform.right * ~);

だけ!


下なのにforward? 左なのにright?と思いますが、
''
forward は前に1移動する
right 右に1移動する''
up 上に1移動する

という命令です。 なので反対を動かすにはマイナスするのです。
forwardをマイナスすれば後ろに下がります。
いちいちbackという命令があるより、ひとつの命令文で書けるほうがいいですよね。


up
transform.Translate(transform.up*0.1f);
にすると上に上がっていきます
up.JPG

Sphereを矢印キーボートで前後させる

Sphereのインスペクター
Rigbody.JPG



using UnityEngine;
using System.Collections;

public class myScript : MonoBehaviour {

    // Use this for initialization.
    void Start () {
    
    }
    
    // Update is called once per frame.
    void Update () {
        if(Input.GetKey(KeyCode.UpArrow)){
            transform.GetComponent<Rigidbody>().AddForce (0, 0, 1);
    }
        if(Input.GetKey(KeyCode.DownArrow)){
            transform.GetComponent<Rigidbody>().AddForce (0, 0, -1);
        }
 }
}
矢印キーで前後に動く
spe.JPG
sp2.JPG


sphereに合わせてカメラを動かす



Vector3 pos = transform.position;
      pos.y += 2.5f;
       pos.z -= 3f;
       GameObject camera = GameObject.Find("Main Camera");
       camera.transform.position = pos;



using UnityEngine;
using System.Collections;

public class myScript : MonoBehaviour {

    // Use this for initialization.
    void Start () {
    
    }
    
    // Update is called once per frame.
    void Update () {
        if(Input.GetKey(KeyCode.UpArrow)){
            transform.GetComponent<Rigidbody>().AddForce (0, 0, 1);
        }
        if(Input.GetKey(KeyCode.DownArrow)){
            transform.GetComponent<Rigidbody>().AddForce (0, 0, -1);
        }
        Vector3 pos = transform.position;
        pos.y += 2.5f;
        pos.z -= 3f;
        GameObject camera = GameObject.Find("Main Camera");
        camera.transform.position = pos;
 }
}

常に動くsphereの上にカメラが固定されているので簡単なプレイヤー目線移動のようなものができた。
sp4.JPG
sp5.JPG

  • 最終更新:2016-04-17 14:06:44

このWIKIを編集するにはパスワード入力が必要です

認証パスワード