トマシープが学ぶ

Unity/VR/AR/デザイン好きのミーハー 記事内容は自分用のメモです

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

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

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

lookAt

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class LookAt : MonoBehaviour
{
    public Transform target; // インスペクターでセットするターゲットオブジェクト

    public Animator animator; // Animatorコンポーネントへの参照

    void OnAnimatorIK(int layerIndex)
    {
        if (target != null) // ターゲットが設定されているかチェック
        {
            animator.SetLookAtPosition(target.position); // ターゲットの位置を設定
            animator.SetLookAtWeight(1.0f, 0.8f, 1.0f, 0.0f, 0f);// ターゲットへの向きの重みを設定
        }
    }
}

おぐりんにVRで会いに行く - トマシープが学ぶ

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;

//ここに処理
}