欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Unity 2D游戏基本知识笔记2

程序员文章站 2024-03-16 17:44:46
...

延时运行函数:

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<脚本的名字>().变量名 = 新的值;