完全に自分用のUnityスクリプトメモ
今までブックマークしたりググったりしてたけど、自分でまとめたほうが覚えるし逆引きも簡単かなと思いました。
- lookAt
- Instantiateでprefabを作る
- Slider
- オブジェクトの位置を変える
- ランダム
- 他のスクリプトの変数を参照する方法
- keycode
- マウスクリック
- シーンの初期化と遷移
- 衝突(当たり判定)
- 2つのオブジェクトの距離
- その他
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);// ターゲットへの向きの重みを設定
}
}
}
Instantiateでprefabを作る
Instantiate(prefabs,pos,Quaternion.identity); 無回転
Slider
public Slider slider;
slider.valueでスライダーの値をもらえる。
オブジェクトの位置を変える
Vector3 tmp = GameObject.Find("hogehoge").transform.position;
GameObject.Find("hogehoge").transform.position = new Vector3(tmp.x + 100, tmp.y, tmp.z);
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;
ランダム
Random.Range(0.0f, 360.0f)
他のスクリプトの変数を参照する方法
元:public static int a;
参照する方:元のスクリプト名.a
元がnamespaceで囲まれている時は、参照側で「using ネームスペース名;」をつけてから
keycode
if( Input.GetKeyDown( KeyCode.Space ) )
マウスクリック
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"); は廃れたらしい。
衝突(当たり判定)
triggerはどちらかにis triggerにチェックが入っていれば良い。ただしどちらかにrigidbodyが必要
collisionは両方にrigidbodyが必要
void OnTriggerEnter (Collider other){
if(other.tag=="sample"){
void OnCollisionEnter(Collision other){
if (other.gameObject.tag == "sample"){
二つの違いはこちらがわかりやすかったです。
2つのオブジェクトの距離
Vector3 Apos = objA.transform.position;
Vector3 Bpos = objB.transform.position;
float dis = Vector3.Distance(Apos,Bpos);
当たり判定をつけるのがめんどくさいときに使いました。
その他
private float timeleft;
timeleft -= Time.deltaTime;
if (timeleft <= 0.0) {
timeleft = 1.0f;//ここに処理
}