トマシープが学ぶ

Unity/VR好きのミーハー初心者 記事内容は自分用のメモ。何も求めないで

完全に自分用のUnityスクリプトメモ集

完全に自分用のUnityスクリプトメモ

今までブックマークしたりググったりしてたけど、自分でまとめたほうが覚えるし逆引きも簡単かなと思いました。

f:id:bibinbaleo:20180317200407p:plain

Instantiateでprefabを作る

Instantiate(prefabs,pos,Quaternion.identity); 無回転

docs.unity3d.com

qiita.com

Slider

public Slider slider;

slider.valueでスライダーの値をもらえる。

hiyotama.hatenablog.com

オブジェクトの位置を変える

Vector3 tmp = GameObject.Find("hogehoge").transform.position;
GameObject.Find("hogehoge").transform.position = new Vector3(tmp.x + 100, tmp.y, tmp.z);

qiita.com

Inspectorにあるのと同じRotationをVector3に収めるにはlocalEulerAngles

Vector3 tmp = controller.transform.position;
Vector3 tmpr = controller.transform.localEulerAngles;
text.text = "X:" +tmp.x+ " Y:" + tmp.y + " Z:"+tmp.z;
textr.text = "X:" + tmpr.x + " Y:" + tmpr.y + " Z:" + tmpr.z;

gametukurikata.com

ランダム

Random.Range(0.0f, 360.0f)

docs.unity3d.com

他のスクリプトの変数を参照する方法

元:public static int a;

参照する方:元のスクリプト名.a

元がnamespaceで囲まれている時は、参照側で「using ネームスペース名;」をつけてから

hiroyukitsuda.com

keycode

if( Input.GetKeyDown( KeyCode.Space ) )

docs.unity3d.com

マウスクリック

if (Input.GetMouseButton(0)) {
print("左ボタンが押されている");
}
if (Input.GetMouseButton(1)) {
print("右ボタンが押されている");
}
if (Input.GetMouseButton(2)) {
print("中ボタンが押されている");
}

シーンの初期化と遷移 

using UnityEngine.SceneManagement;

 

SceneManager.LoadScene("test"); 

自分のシーンを読み込めばリセットになる。

LightをBakeしていないとロードした時に暗くなる。

ちなみに Application.LoadLevel("Main");  は廃れたらしい。

f:id:bibinbaleo:20180221145953p:plain

衝突(当たり判定)

triggerはどちらかにis triggerにチェックが入っていれば良い。ただしどちらかにrigidbodyが必要

collisionは両方にrigidbodyが必要

void OnTriggerEnter (Collider other){

 if(other.tag=="sample"){

void OnCollisionEnter(Collision other){
if (other.gameObject.tag == "sample"){

qiita.com

indie-du.com

二つの違いはこちらがわかりやすかったです。

waken.hatenablog.com

2つのオブジェクトの距離

Vector3 Apos = objA.transform.position;
Vector3 Bpos = objB.transform.position;
float dis = Vector3.Distance(Apos,Bpos);

blog.livedoor.jp

当たり判定をつけるのがめんどくさいときに使いました。

その他

 

qiita.com

private float timeleft;

 

timeleft -= Time.deltaTime;
if (timeleft <= 0.0) {
timeleft = 1.0f;

//ここに処理
}