2D游戏开发 - SkyGameEngine2d坐标系

2D游戏开发 - SkyGameEngine2d坐标系

  • 一、DX11使用的坐标系
  • 二、屏幕坐标系&窗口坐标系
  • 三、SkyGameEngine2d 坐标系
  • 四、世界坐标系&局部坐标系
  • 五、锚点
  • 六、精灵在图片纹理种的位置坐标

SkyGameEngine2d - 探索 简洁 易用 ,一款适合游戏入门学习的2d游戏引擎
项目地址 https://gitee.com/xfcode/SkyGameEngine2d

QQ群号:498358732
加群链接:https://jq.qq.com/?_wv=1027&k=5odSA9K


我们在开发各种应用程序时,经常会说到某个元素在那个坐标位置。坐标位置是相对某一个坐标系而言的,在不同的坐标系下相同的位置坐标的表示也不尽相同。

理解SkyGameEngine2d引擎中涉及的坐标系,才可以在游戏开发中正确的设置各种游戏元素的位置。

一、DX11使用的坐标系

实际上存在2种完全不同的3D坐标系 - 左手系、右手系 。DirectX11使用左手系,如下图所示。

所谓左手系,伸出左手,让拇指和食指成“L”形,大拇指向右,食指向上。其余的手指指向前方。拇指、食指、
其余手指分别代表x,y,z

二、屏幕坐标系&窗口坐标系

Windows屏幕坐标系与窗口坐标系为二维坐标系,原点为左上角。x 轴向右递增,y 轴向下递增。
在引擎种如果要确定游戏窗口在桌面的位置时,需要用到屏幕坐标,如果使用一些平台的接口,屏幕坐标系与窗口坐标系很有用。

三、SkyGameEngine2d 坐标系

引擎使用的坐标系为二维坐标系。原点为左下角,x 轴向右递增,y 轴向上递增。引擎坐标与屏幕坐标的对比如下图所示。

四、世界坐标系&局部坐标系

世界坐标系 同引擎坐标系
局部坐标系 也为相对坐标系,是和节点相关联的坐标系,在引擎中节点时以树的形式组成的,子节点的位置相对与父节点。节点的坐标系原点为节点左下角。
引擎API Node::setPosition(const Vector2& pos); 设置的坐标为当前节点相对与父节点的位置坐标,即相对与父节点的坐标系。

五、锚点

锚点为节点的参考点,我们在设置一个节点的位置时,实际上就是把这个节点的锚点设置到该位置。节点在缩放、旋转、位移时都是以锚点为参考点进行。

注意:

  1. 精灵的翻折不受锚点的影响。
  2. 锚点并非递归的生效,改变父节点的锚点位置并不会改变子节点的锚点位置。

锚点的值为节点宽和高的比例。比如(0.5, 0.5)表示锚点在节点的中心,(0, 0)便是锚点在节点左下角的位置。
节点默认的锚点在节点的左下角,不同类型的节点锚点默认位置不同,如下表所示。

Node Scene Sprite
(0, 0) (0, 0) (0.5, 0.5)

六、精灵在图片纹理种的位置坐标

引擎支持从一张大的纹理图片中指定一块矩形区域作为精灵的纹理,那么描述这块区域同样需要坐标系。引擎约定以纹理的左下角为坐标系的原点,x 轴 向右递增,y轴向上递增。如图所示,开始按钮的区域Rect 左下角为(0,0)宽高为(250,70)。


本节完
最后更新时间: 2019-05-28 17:23:51