zoukankan      html  css  js  c++  java
  • SpriteKit项目——小妖精漫步----纹理贴图集(Texture Atlas)

    一、为什么要使用纹理贴图?
    –应用程序在为精灵图片分配内存空间时,需要分配超过图片尺寸的,并且是最小的2的幂次的尺寸。例如,一张图片的长和宽分别是129px和65px,则分配的内存空间需要是256*128*每个像素占用的内存字节数。可以发现实际的图片信息大约只占用了内存空间的1/4,也就是说将近3/4的内存空间被浪费了。一次每通过图片创建一个精灵,就会发生内存浪费的现象。精灵数量越多,内存的浪费越严重!
    •注:要使用纹理贴图集,项目名称及保存目录不能包含中文!
    二、SpriteKit项目——小妖精漫步
    •竖屏演示
    •初始小妖精站在屏幕中间发呆
    •点击屏幕的任意位置后:
    Ø小妖精旋转至对应方向
    Ø按照恒定的速度行走至目标点
     
    三、开发步骤:加载贴图集

    // 1. 加载贴图集

    SKTextureAtlas *atlas = [SKTextureAtlas atlasNamed:@"Goblin_Walk"];

    // 2. 使用纹理图填充数组

    NSMutableArray *arrayM = [NSMutableArray arrayWithCapacity:28];

    for (NSInteger i = 1; i < 29; i++) {

        NSString *name = [NSString stringWithFormat:@"goblin_walk_%04d", i];

        SKTexture *texture = [atlas textureNamed:name];

        [arrayM addObject:texture];

    }

    _walkFrames = arrayM;

    四、小妖精行走Action

    创建小妖精图像精灵

    SKSpriteNode *goblin = [SKSpriteNode spriteNodeWithTexture:_walkFrames[0]];

    goblin.position = CGPointMake(self.size.width / 2, self.size.height / 2);

    [self addChild:goblin];

    _goblin = goblin;

    // 4. 小妖精行走

    SKAction *walkAction = [SKAction animateWithTextures:_walkFrames timePerFrame:0.1f];

    [goblin runAction:[SKAction repeatActionForever:walkAction]];

    五、根据点击位置旋转方向

    // 旋转小妖精

    CGPoint location = [[touches anyObject] locationInNode:self];

    CGPoint offset = CGPointMake(location.x - _goblin.position.x, location.y - _goblin.position.y);

    CGFloat angle = atan2f(offset.y, offset.x) - M_PI_2;

    _goblin.zRotation = angle;

    六、行走不骗

    七、添加发呆动画,行走至目标点

    / 计算行走距离

    CGFloat distance = sqrtf(powf(offset.x, 2.0) + powf(offset.y, 2.0));

    CGFloat duration = distance / self.size.height * 8.0;

    // 删除所有操作

    [_goblin removeAllActions];

    [self goblinRepeatFrame:_walkFrames];

    // 定义行走动作

    SKAction *moveTo = [SKAction moveTo:to duration:duration];

    [_goblin runAction:moveTo completion:^{

        [_goblin removeAllActions];

        [self goblinRepeatFrame:_idleFrames];

    }];

  • 相关阅读:
    PHP调用Webservice实例
    php 判断是否为搜索引擎蜘蛛 转载
    IBM WebSphere MQ / Omegamon XE for Messaging / ActiveMQ 5.9 / Apache Artemis
    IBM Tivoli Workload Scheduler
    my read_psychology
    IBM WebSphere Portal / RAD 7.5
    IBM WebSphere Extended Deployment
    鱼C加密程序
    多分支Case语句
    函数模板 C++快速入门44
  • 原文地址:https://www.cnblogs.com/changxs/p/3484972.html
Copyright © 2011-2022 走看看