Unity 遊戲基本知識筆記

延時運行函數

Invoke("函數名", 1.5f);    //1.5秒後運行該函數

屏幕座標轉化爲世界座標

Vector3 WorldPos = Camera.main.ScreenToWorldPoint(ScreenPos);    //參數是屏幕座標

世界座標轉化爲屏幕座標

Vector3 ScreenPos = Camera.main.WorldToScreenPoint(WorldPos);    //參數是世界座標

兩位置之間的距離

float Distence = Vector3.Distance(Pos1, Pos2);    //三維
float Distence = Vector2.Distance(Pos1, Pos2);    //二維

單位化向量

Pos=Pos.normalized;

屏幕座標轉化爲UI座標的函數(方法一)

Vector3 GetUIPos(Vector2 ScreenPos, Canvas canvas) {
    Vector3 pos;
    RectTransformUtility.ScreenPointToLocalPointInRectangle(canvas.transform as RectTransform, ScreenPos, canvas.worldCamera, out pos);
    return pos;
}

屏幕座標轉化爲UI座標的函數(方法二)

Vector3 GetUIPos(Vector2 ScreenPos) {
    Vector2 pos = ScreenPos - new Vector2(Screen.Width / 2, Screen.Height / 2);
    return new Vector3(pos.x, pos.y ,0);
}

求碰撞體的相對速度

void OnCollisionEnter2D(Collision2D c) {
       float Speed = c.relativeVelocity.magnitude;
}

遍歷查找對象的子物體

foreach (Transform child in transform) {
    if (child.gameObject.name == "要查找的子物體的名字") {
        //執行操作
    }
}

判斷碰撞到自己的物體是什麼

void OnCollisionEnter2D(Collision2D c) {
    if (c.collider.name == "碰撞體的名字") {
           //執行操作
    }
}

在場景裏創建一個對象

GameObject Obj = Instantiate(gameObject, new Vector3(0, 0, 0), new Quaternion(0, 0, 0, 0));
//參數一:要創建的對象的預設
//參數二:物體的位置
//參數三:物體的旋轉角度

修改UI物體的座標

transform.GetComponent<RectTransform>().localPosition = new Vector3(0, 0, 0);    //以屏幕中心爲原點
transform.GetComponent<RectTransform>().position = new Vector3(0, 0, 0);    ///以屏幕左上角爲原點

修改某個對象所掛腳本里的public變量的值

GameObject.Find("對象的名字").GetComponent<腳本的名字>().變量名 = 新的值;

給變量添加說明

[Tooltip("說明內容")]
public int a = 0;

/*添加說明後,在Inspector窗口的代碼變量裏,將鼠標放在
變量名上一會兒就會出現說明內容,用於解釋變量的意義*/

給變量添加限制 

[Range(-1f, 1f)]    //限制值爲-1到1之間
public float a;

//添加限制後,編輯時就只能在這個範圍內修改

從某物體的子物體中獲取對象

//以下拿2D碰撞器舉例,其它同理

Collider2D X = transform.GetComponentsInChildren<Collider2D>();

將a對象置於b對象的子類中

a.transform.parent = b.transform;

localPosition和position的區別

transform.localPosition
其座標系的座標中心是它的父類位置(如果沒父類那就和position一樣的),直白的也可以說
該物體屬性窗口顯示的位置就是它的localPosition。
transform.position
世界座標系,物體通用的

foreach語句用法

foreach (Collider2D x in transform) {    //遍歷transform子物體中含有2D碰撞器的物體x
    if(Object1) {    //遍歷查找是否含有Object1,有多個則執行多次
        //操作
    }
    x.transform.position=...    //對每個含有2D碰撞器的對象進行處理
}

//注意,只能遍歷一層子物體

//第一行的transform也可以替換成其它類型對象的數組,比如Collider2D的數組,這樣一來就是一個
//雙重循環了,對每一個碰撞器,都拿它對應的物體作爲transform。

角度弧度相互轉化

弧度數 = 角度數 * Mathf.Deg2Rad;
角度數 = 弧度數 * Mathf.Rad2Deg;

使物體朝向目標位置

transform.LookA(Vector3);    //參數填寫世界座標

求向量的長度

Vector3 Pos = new Vector3(1, 1, 1);
float a = Pos.magnitude;    //長度
float b = Pos.sqrMagnitude;    //長度的平方

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章