坐标体系分为4种:1:屏幕/鼠标坐标,2:Viewport/视图坐标 ,3世界坐标,4,2d世界的坐标和4个锚点,中心轴pivot关系紧密.
以下分为几点进行讨论解释
1,屏幕坐标就是鼠标坐标,从左下角向上为原点Y轴正方向,从左下角向右为原点X轴正方向,每个点就是一个像素.
世界坐标转换为屏幕坐标:Camera.main.WorldToScreenPoint(cube.transform.position);cube是3D物体.可以应用到游戏角色头上文字,血条等.如将cube转化为屏幕坐标,将2D UI控件位置赋值,UI控件再转化为3D坐标,展示在3D空间上.
2:世界坐标,主场景原点为(0,0,0) ,下面的任一物体在创建时,建议先Reset以下,父子物体展示出来的是相对坐标.
将2D物体转换为世界坐标,Z是一般是一个 -10 .使用Camera.main.ScreenToWorldPoint(image.transform.position)image是一个2D物体.如此情况下在这个画布Canvas平面中如何拖动x轴或者z轴都不会改变,x 为0,y为1,综合起来image的世界坐标就是(0,1,-10).如果再在这个画布上放一image1,这个image1和image的2D位置不一样,但是他们2个的3D世界坐标,竟然是一样的(0,1,-10),需要特别注意,一般情况下不使用屏幕坐标转换成为世界坐标. Input.mousePosition 或者 Input.touches[0].position可以获得鼠标或者单根手指的屏幕(2D)坐标。可以应用到射击游戏的瞄准子弹发射方向以及游戏中点击地面游戏角色移动等.
3:ViewportRect,一般制作小地图/分屏使用,左下角为原点,右上角为(1,1),鼠标位置,触摸位置,世界坐标,UI位置等与此属性没有太大关系.
viewportrect视口坐标是三维坐标
世界坐标转换为视口坐标:Camera.main.WorldToViewportPoint(cube.transform.position);cube是3D物体.
屏幕坐标转换为视口坐标:Camera.main.ScreenToViewportPoint(image.transform.position);image是2D物体;
5:绘制GUI界面的坐标系:
这个坐标系与屏幕坐标系相似,不同的是该坐标系以屏幕的左上角为(0,0)点,右下角为(Screen.width,Screen.height)。在private void OnGUI()编码的控件坐标系
5:UGUI的坐标不确定,因为它和锚点有关系,4个锚点在一个地方,则此时锚点位置为原点,从左下角向上为原点Y轴正方向,从左下角向右为原点X轴正方向.如果4个锚点分开,情况就非常复杂.详细请看上一节 https://www.jianshu.com/p/9384949964dc
6其他坐标系
摄像机坐标系:
摄像机坐标系PS:做贪吃蛇游戏的诀窍是:在一条蛇上,将最后一个小方块根据方向放到当前蛇头的前方,移除最后一个方块.造成蛇走动的欺骗性艺术.
网友评论