unity小知识点总结

易遗忘的知识点笔记

TransformPoint和InverseTransformPoint
TransformPoint 是变换自身坐标到世界坐标 ,InverseTransformPoint 是变换世界坐标到自身坐标

比如说物体A的坐标内有一个3,3,3的点 你想知道这个点在世界坐标的位置 就应该用TransformPoint

反之在世界坐标下有一个点 你想知道这个点如果是在物体A的坐标下是一个什么位置 就应该用InverseTransformPoint

其实就是在编辑器里把物体拽到根目录下的位置和物体在某物体内的位置之间的一个转换

Vector3 local_pos = transform.InverseTransformPoint(new Vector3(15, 15, 0));//变换世界坐标到自身坐标
Debug.Log(local_pos);//输出的局部坐标的值和挂载脚本的transform中的position、scale有关。输出的局部坐标的值local_pos =(世界坐标的值-transform.position)/scale
如世界坐标的值是(15,15,0),transform的position是(1,1,0),transform的scale是(0.5,0.5,1),则输出的局部坐标的值为(15-1)/0.5=28,即此时世界坐标(15,15,0)转局部坐标为(28,28,0);

Mathf.RoundToInt 四舍五入到整数
返回指定的值四舍五入到最近的整数。如果数字末尾是.5,因此它是在两个整数中间,不管是偶数或是奇数,将返回偶数。
如:
Debug.Log(Mathf.RoundToInt(-10.7));// -11
Debug.Log(Mathf.RoundToInt(-10.5));// -10
Debug.Log(Mathf.RoundToInt(11.5));// 12
Debug.Log(Mathf.RoundToInt(10.2));// 10
Debug.Log(Mathf.RoundToInt(10.7));// 11

Tooltip
[Tooltip(“彩笔颜色”)]
public Color Pen_Color = new Color(255f, 255f, 255f, 0f);
[Tooltip(“钢笔宽度”)]
public int Pen_Width = 20;
在Inspector面板上,将鼠标放在Pen_Color上会显示“彩笔颜色”这几个字。
同理,将鼠标放在Pen_Width上会显示“钢笔宽度”这几个字。

Texture
texture.GetPixels(x, y, texture.width, texture.height);//获取以x,y 为起始点,大小为width,height的一个区块,返回的是一个数组,数组内颜色的点顺序为从左至右,从下至上。

texture.GetPixels32();//获取(指定mipmap level级别)的整张贴图的像素颜色(使用Color32格式),返回的是Color32[]类型的数组。

Physics2D.OverlapPoint 重叠点
参数介绍
point: 一个世界空间中的点。
layerMask:只在某些层过滤检测碰撞器。
minDepth:只包括Z坐标(深度)大于这个值的对象。
maxDepth:只包括Z坐标(深度)小于这个值的对象。

检测一个碰撞器是否与世界空间中的一个点重叠。

层遮罩可以用于指定检测特定某些图层的对象。

虽然Z轴与2D的渲染或碰撞无关,但是你可以使用minDepth和maxDepth参数去排除一些对象基于他们的Z轴。如果有好几个碰撞器都与点重叠,那么最小的Z坐标的那个碰撞器将会被返回。如果没有碰撞器与点重叠就返回Null了。

还要注意这个函数会分配内存给返回的Collider2D对象。在你需要频繁做这个检测的时候,可以使用OverlapPointNonAlloc这个函数去避免这些开销。

Vector3 touchPosition = Camera.main.ScreenToWorldPoint (Input.mousePosition);
var colliderObject = Physics2D.OverlapPoint (new Vector2 (touchPosition.x, touchPosition.y),

Vector3.normalized和Vector3.Normalized区别
Vector3.normalized
当前向量是不改变,返回一个新的规范化的向量,只读,返回值是vector3类型的,所以定义一个新的vector3类型的变量来接收它。

Vector3.Normalize
改变当前向量,当前向量长度是变为1,无返回值。

Vector3 pos = new Vector3(3, 4, 5);
Vector3 pos1 = pos.normalized;
Debug.Log(pos1);

Vector3 p = new Vector3(3, 4, 5);
p.Normalize();
Debug.Log(p);

两者输出的值都是(0.4,0.6,0.7),输出的值都是一样的。

主角旋转

		float v = Input.GetAxis("Vertical");
        float h = Input.GetAxis("Horizontal");
        if(Mathf.Abs(v)>0.1f|| Mathf.Abs(h) > 0.1f)
        {
            Vector3 dir = new Vector3(h, 0, v);
            Quaternion targetDir = Quaternion.LookRotation(dir, Vector3.up);
            transform.rotation = Quaternion.Lerp(transform.rotation, targetDir, rotateSpeed);
        }

持续更新中。。。

发布了15 篇原创文章 · 获赞 0 · 访问量 250

猜你喜欢

转载自blog.csdn.net/weixin_43839583/article/details/103527474