SpriteKit中的坐标系简要

作者: 自在的仙人 | 来源:发表于2016-05-06 14:01 被阅读887次

在学习SpriteKit做2D游戏开发之前,我看了一点Cocos2D的游戏开发代码,发现Cocos2D和SpriteKit的开发接口以及相关的框架极其相似,就好比C#和Java之间的那种类似程度,这种类似已经达到了令人发指的地步,包括标题中的坐标系系统都是一模一样的。

1.SK中所有在界面上对用户可见的对象都有一个Frame,其实就是一个矩形(CGRect结构体)。所有的矩形被放到window窗体上给用户展示的时候都应该有一个被放置的位置(postion)。假设要把矩形对象A放倒主体对象MainWindow中,那么A的位置就应该以MainWindow的坐标系统为基准进行放置。通常iOS(Single View Application)的界面坐标系(比如UIView等)的原点(0,0)在左上角,而在SpriteKit(以下简称SK)中原点在左下角。所以当我们初始创建出来一个SKView的时候(记作skv),这个时候,我们新建一个SKScene(记作scene)并且使用默认的方式展示(presentScene)将其展示出来时,SKScene就会被完整地展现出来。

2.到了这里所有东西看上去都很正常,但是,此时,再新建一个SKSpriteNode(记作sprite),并加在一张图片进去,使用scene的addChild方法将sprite加入到界面上显示出来时,发现sprite只有右上角的1/4被显示在scene的左下角。

3.要将此sprite完整的在界面上显示出来,我们就需要调整sprite的位置postion,但是通过调整sprite的anchorPoint(翻译出来叫做“锚点”,cocos2D里面好像就是anchor属性)也同样可以实现。

4.锚点的x和y值都在0~1之间。“锚”是船在靠近岸边的时候的一个硕大沉重的铁钩,用来固定船的位置,免得船被水流或者潮水给“冲走了”,sprite的锚呢,实际上就是我们用来标记它的移动基点的,就好比人的腿,我们说“你单脚从A跳到B位置”,实际上就是用我们的某一只脚的位置,从A一次性跳动到了B,我们说“你左脚单脚站立旋转180度”,实际上就是我们缩起右脚,用左脚站立旋转180度。那么显而易见的,当我们设定sprite的位置(position)的时候,就是把它的锚点“anchorPoint”从某个位置移到了某个地方,旋转也是一样的,我们说设置sprite的zRotation的时候,就是按住sprite的锚点不动,旋转一定的角度。当我们再往sprite加入一个新的SKSpriteNode(记作child)的时候,我们设置child的位置为(0,0)时,如果sprite的锚点的位置变化,child的位置也会随之变化,观察一下就能发现sprite的锚点就是它自身坐标系的原点位置。将child的postion设置为point1,(使用swift语法)然后sprite.addChild(point1) ,就是把child的anchor作为基点,将child放置到sprite的anchor位置为原点位置的point1上去。用图来表示一下:

sprite和child的anchor和自身坐标系视图

然后将child添加到sprite中:

把child添加sprite中后的视图

5.默认情况下SKSprite的锚点为(0.5,0.5),即自己的中心位置。锚点的值的含义表示的是自己的高和宽的比例位置,比如(0,0)则表示左下角,(0,1)左上角,(1,1)为右上角,(1,0)表示的就是右下角。

到此,SpriteKit的坐标系应该差不多就这样了。。。。。。。

相关文章

  • SpriteKit中的坐标系简要

    在学习SpriteKit做2D游戏开发之前,我看了一点Cocos2D的游戏开发代码,发现Cocos2D和Sprit...

  • SpriteKit从0到入门

    SpriteKit(0) - 序言SpriteKit(1) - 坐标系SpriteKit(2) - 场景过渡动画S...

  • SpriteKit(1) - 坐标系

    首先 有个比较有意思的地方.创建一个场景有两种方式. 第一种: let scene = SKScene(fileN...

  • SpriteKit

    玩转SpriteKit iOS Sprite Kit教程之场景的切换 SpriteKit中为何不要在update方...

  • SpriteKit 在iOS8和 OSX10.10 中的新特性

    SpriteKit 在iOS8和 OSX10.10 中的新特性 SpriteKit 在iOS8和 OSX10.10...

  • SpriteKit笔记_Part1

    最近基于SpriteKit做了几个小项目,由于小项目也并不是很难,因此也没有把SpriteKit中很多的功能...

  • Gis常识-- 坐标系统(简要)

    地球空间参考系统确定地理目标平面位置和高程的平面坐标系和高程系的统称。 地球椭球体:对地球表面形成的球体的数学抽象...

  • ARKit Apple官方文档03 使用SpriteKit

    使用SpriteKit将二维图像放置在3D空间中。 概述 要将SpriteKit内容放在AR场景中,您首先需要运行...

  • 4.three.js中的坐标系

    Three.js中的坐标系 three.js中坐标系使用的是左手坐标系 左手坐标系和右手坐标系的对比: three...

  • 2019-01-16echarts知识点

    echarts中的坐标系统分为,直角坐标系,极坐标系,雷达坐标系,地图坐标系

网友评论

  • 2d9efc183006:说实话,这个锚点没怎么看明白.
    自在的仙人:@cd2want 嗯 可以
    2d9efc183006:@至尊珏 恩,多谢指导哈. 大概明白了. 有点类似篮球中,拿着球一只脚不能动,另一只则可以旋转移动. 就是自己的'中心'点. 这样理解可以吗?
    自在的仙人:@2d9efc183006 我可以再给你解释一下:每个Sprite都是一个一定大小的矩形,这个矩形自身会有一个坐标系,锚点就是他自己的坐标系的原点,假如锚点的大小是:(0.1,0.6),意味着这个Sprite的原点位于它的 宽乘以0.1,高乘以0.6的位置,(从它的左下角分别向右和向上算)。同时,当你旋转这个矩形的时候,就是按住这个锚点为轴心,对这个Sprite进行自旋转,移动的时候,也是一样的。

本文标题:SpriteKit中的坐标系简要

本文链接:https://www.haomeiwen.com/subject/tuhjrttx.html