Unity 点,像素和坐标系

坐标系分类

1.物理引擎坐标系 / 世界坐标系
2.屏幕坐标系

屏幕坐标系是这样, 右上角x值最大,y值最大,左下角x,y都为0, 数值为屏幕像素尺寸


Unity 点,像素和坐标系_第1张图片
未标题-1.png

世界坐标系为:


Unity 点,像素和坐标系_第2张图片
未标题-12.png

世界坐标系和像素的比率可以调整在设置中,也可以对单个资源进行调整

屏幕触摸的点转换到世界坐标系中:

Camera.main.ScreenToWorldPoint(p)

获得触摸点:
触摸点 Input.GetTouch (0).position
鼠标点 Input.mousePosition

获得屏幕像素数

Screen.width
Screen.height

获得世界在屏幕中的大小

Vector3 v3 = Camera.main.ScreenToWorldPoint (Vector3.zero);
winSize = new Vector2 (Mathf.Abs(v3.x)*2, Mathf.Abs(v3.y)*2);

获得像素和世界转换比例

pixelPerPot = winSize.x/Screen.width;

将物体缩放到指定大小

var l = gameObject.GetComponent ().sprite.bounds.size.y;
var s = gameObject.transform.localScale;
s.y = rayLenMin/l;
gameObject.transform.localScale = s;

注意事项 相对坐标和世界坐标

一个对象的世界坐标点和相对坐标点是有区别的
当此对象的父级不是根层,或者父级位置不为0,则相对坐标系会和世界坐标系有差异

例如:A在B中,B在场景中
B的场景位置是(1,1),设置A的localPosition相对坐标(1,1),则A的position世界坐标为(2,2),在此请注意

注意事项2 诡异的坐标系

一个对象在设置坐标位置和改变父级关系的顺序不同,会导致不同的结果

例如:当要把A放置在B中,B的位置点(1,1),把A剧中在B上设置位置点(0,0),顺序不同会导致结果错误
顺序1: 先设置A的相对坐标(0,0),再把A放到B中,这时候你会发现,A不在B中剧中,而是在世界坐标(0,0)点
顺序2:先把A放置在B中,再挪动A到相对坐标(0,0)点,这时候可以看到A是在B中剧中的。

相对坐标会随着父级变化而相对变化,此时无论对象怎么变化位置之后变化父级,其世界坐标位置不变

注意事项3 瞄点

对象的资源设置中,可以改变瞄点位置(中心点),默认是对象正中心。center
改为Top后,如果缩放,则只向两侧和下方向缩放

这个很适合制作单项缩放的对象

注意事项4 物体叠放的层

做2d开发的时候,你不知道如何跌幅物体置顶顺序,其实只要注意z轴数值即可。同时要注意正交相机是有有效z值范围的,如果超出去,相机会忽略它的存在

注意事项5 物理影响的层

你怎么判断哪些对象之间相互碰撞,答案在layer中。layer中创建多个层级,并在设置/物理引擎中来调整层与层之间是否有相互碰撞关系


Unity 点,像素和坐标系_第3张图片
image.png

其实大部分开发朋友最开始接触unity的时候,都对位置很谜, 研究透彻了,也就不觉得有多难了,从这个难点开始突破,然后就是顺利的开发了,祝开发愉快

你可能感兴趣的:(Unity 点,像素和坐标系)