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;    //长度的平方

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值