美文网首页
打飞机03-子弹和敌机

打飞机03-子弹和敌机

作者: H小凡 | 来源:发表于2017-06-10 15:43 被阅读47次
子弹与敌机.gif

子弹和敌机以及动画

1.创建子弹,位置与飞机位置关联
2.创建敌机,从屏幕上方出现
3.我觉得最好还是使用计时器吧,这个确实是方便了很多,而且很容易就能控制频率,缺点就是不能通过skview的pause属性来暂停计时器,不过这个暂时用不上

-(void)didMoveToView:(SKView *)view {
    
    self.size = self.view.frame.size;
    
    [self backgroundNode];
    [self planeNode];
    
    //创建一个手势与panAction关联
    UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(panAction:)];
    
    //添加手势到view
    [self.view addGestureRecognizer:pan];
    
    //每0.5秒执行一次bullet方法 target添self userinfo为nil 重复为YES
    [NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(bullet) userInfo:nil repeats:YES];
    
    //与上同理
    [NSTimer scheduledTimerWithTimeInterval:1.5 target:self selector:@selector(enemy) userInfo:nil repeats:YES];
}

一、子弹以及动作

-(void)bullet {
    SKSpriteNode *bullet = [SKSpriteNode spriteNodeWithImageNamed:@"bullet2"];
    bullet.name = @"bullet";
    //同理子弹也是在bg的上层,zPosition = 1
    bullet.zPosition = 1;
    
    //子弹的位置始终和飞机的位置相关联的,所以要获取到飞机的位置
    SKSpriteNode *plane = (SKSpriteNode *)[self childNodeWithName:@"plane"];
    
    //为了方便计算位置设置anchorPoint为底部中间
    bullet.anchorPoint = CGPointMake(0.5, 0);
    
    bullet.position = CGPointMake(plane.position.x, plane.position.y + plane.size.height/2);
    
    [self addChild:bullet];
    
    //子弹的飞行动作,这里要是用moveToY的话 当飞机移动到顶端时终点不变,子弹飞行路程变短,飞行时间不变,速度就会明显变慢,所以使用moveBy,x轴方向不做位移
    SKAction *act = [SKAction moveByX:0 y:self.size.height duration:2];
    
    [bullet runAction:act];
    
}

二、敌机以及动作

-(void)enemy {
    
    SKSpriteNode *enemy = [SKSpriteNode spriteNodeWithImageNamed:@"enemy0"];
    enemy.name = @"enemy";
    enemy.zPosition = 1;
    
    //enemy出现的位置的x轴是不固定的,最好不要把初始位置设置在屏幕内 x轴最好不要超出屏幕
    //最小值enemy.size.width/2 随机数0到self.size.width - enemy.size.width 整个x的范围是enemy.size.width/2到self.size.width - enemy.size.width/2
    CGFloat x = enemy.size.width/2 + arc4random()%(int)(self.size.width - enemy.size.width);
    enemy.position = CGPointMake(x, self.size.height + enemy.size.height);
    
    [self addChild:enemy];
    
    [enemy runAction:[SKAction moveToY:-enemy.size.height duration:4]];
    
}

相关文章

  • 打飞机03-子弹和敌机

    子弹和敌机以及动画 1.创建子弹,位置与飞机位置关联2.创建敌机,从屏幕上方出现3.我觉得最好还是使用计时器吧,这...

  • 微信打飞机

    对象:主机、子弹、敌机动画:画、动碰撞:主机碰撞敌机、子弹碰撞敌机(像素碰撞--性能问题)玩法、声音:(选做) 普...

  • Python打飞机(飞机大战)

    敌机和主机 发子弹 连发子弹 飞机大战(加音乐代码) 飞机大战代码: 精灵组 飞机大战敌机 飞机大战背景 上下左右...

  • Android Canvas打飞机之被打中的主角

    上一篇 实现了主角打中敌机,敌机死亡并且显示爆炸效果,今天这里主要来实现主角被敌机碰撞以及被敌机子弹打中的效果和逻...

  • 2018-10-21 Python27 飞机大战

    飞机基类: 英雄(玩家): 敌机: 子弹: 主程序:

  • Java飞机大战

    FlyingObject,作为飞行物的父类,这里的飞行物指的就是敌机,小蜜蜂,子弹,英雄机 敌机类,图片取自Sho...

  • NO.17 飞机大战(1)

    今天开始做一个小型项目: 实现一个英雄机发子弹可以消灭上方掉落的敌机和小蜜蜂,打掉敌机可以得分,而打掉小蜜蜂可以获...

  • iFIERO - (二)宇宙大战 Space Battle --

    本节主要讲解如何创建无限循环Endless的星空背景(如下图)、玩家飞船发射子弹,监测子弹击外星敌机的Sprite...

  • Python Test之Game-Plane

    简介:使用pygame库来做打飞机的小游戏,由键盘控制飞机的移动,消灭敌机,声音效果展示。代码参考网上,自己也做了...

  • 飞机大战游戏(完结)

    子弹可以飞了,完事儿之后就可以添加敌机了 其实这里面所有的敌机基本上都类似,这里只说一种,然后现在把代码弄过来: ...

网友评论

      本文标题:打飞机03-子弹和敌机

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