美文网首页
使用swift实战游戏

使用swift实战游戏

作者: supory | 来源:发表于2016-08-08 11:09 被阅读91次

    一、构建项目

    二、在MainScene.swift中定义背景图、地面图、精灵

    1.1创建背景图

    由于背景图是可以拉伸的,因此为了适配全屏,需要在X Y 方向放大

    此处的疑问,多个资料显示的是在scene中创建Layer层;但是CALayer是继承自NSObjec,而不是框架的CCNode所以,没有找到,目前实现的方式是通过自定义Layer层继承自CCNode。感觉貌似不对,查看文档,没有发现Layer类。

    需要设置Layer的position值和positionType类型

    1.2创建地面图

    同样应该是使用一个层,或者直接使用Node节点,将图片固定在某个位置,但是是否需要适配其他的屏幕,而需要相对的坐标。

    1.3创建精灵sprite

    使用ccactionmoveby and CCActionMoveTo两个Action,然后使用CCActionSecquence将这两个动作顺序使用,最后使用CCActionRepeatForever重复使用该队列。保证了精灵一直处于上下跳动。

    1.4为精灵的移动使用控制按钮

    CCActionButton.setTarget

    1.5坐标系的问题

    使用ccpDistance,计算两个点之间的距离,但是涉及到了坐标系的问题,目前还有细节不清楚!后续补充

    多个坐标系,一个通用的UI坐标系,是左上角为原点,x 轴横向, y轴纵向。

    cocos2d坐标系:右手笛卡尔坐标系,x 左延伸,y向上

    使用cocosCreater的例子在ios中使用swift构建游戏,参考cocosCreater文档中的实例


    http://www.cocos.com/docs/creator/

    在设置了position后,计算的distance总是不对,分析是当前的移动的精灵是使用的世界坐标系,而固定的星星是使用的笛卡尔坐标系,因此需要将移动的精灵和星星都使用世界坐标系来计算距离,convertToWorldSpace

    最后采用了将坐标系转换为屏幕坐标系convertToWorldSpace,计算的两个位置,最小也是5,不能达到预期的距离0,最后距离的设计临界值为40;

    1.6定时和计时器的两个类

    cctimer ccscheduler

    通过使用schedule(#selector(MainScene.gameover), interval: 10)才能生成CCTimer,而CCTimer对象是可以取消计时器的功能的,及timer.invalide

    这样就可以重新的添加计时器;

    1.7ccaction的停止和运行

    对于CCAction的停止可以使用名称也可以使用tag值,停止后我理解是释放了该对象,而需要重新添加action.

    对于停止的位置,就是下一次action运行的起始位置,因此需要重新精灵的起始位置。

    相关文章

      网友评论

          本文标题:使用swift实战游戏

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