zoukankan      html  css  js  c++  java
  • LostRoutes项目日志——玩家飞机精灵Fighter解析

    Fighter类的定义在Fighter.js中,Fighter类继承与PhysicsSprite。

    原版的Fighter.js:

     1 var Fighter = cc.PhysicsSprite.extend({
     2         hitPoints: true,        //当前的生命值
     3         space: null,            //所在物理空间
     4         ctor: function (spriteFrameName, space) {
     5             this._super(spriteFrameName);
     6             this.space = space;
     7 
     8             var verts = [
     9                 -94, 31.5,
    10                 -52, 64.5,
    11                 57, 66.5,
    12                 96, 33.5,
    13                 0, -80.5];
    14 
    15             this.body = new cp.Body(1, cp.momentForPoly(1, verts, cp.vzero));
    16             this.body.data = this;
    17             this.space.addBody(this.body);
    18 
    19             var shape = new cp.PolyShape(this.body, verts, cp.vzero);
    20             shape.setElasticity(0.5);
    21             shape.setFriction(0.5);
    22             shape.setCollisionType(Collision_Type.Fighter);
    23             this.space.addShape(shape);
    24 
    25             this.hitPoints = Fighter_hitPoints;
    26 
    27             var ps = new cc.ParticleSystem(res.fire_plist);
    28             //在飞机下面.
    29             ps.x = this.getContentSize().width / 2;
    30             ps.y = 0;
    31             //ps.setRotation(180.0);
    32             ps.setScale(0.5);
    33             this.addChild(ps);
    34         },
    35 
    36         //重写setPosition
    37         setPosition: function (newPosition) {
    38 
    39             var halfWidth = this.getContentSize().width / 2;
    40             var halfHeight = this.getContentSize().height / 2;
    41             var pos_x = newPosition.x;
    42             var pos_y = newPosition.y;
    43 
    44             if (pos_x < halfWidth) {
    45                 pos_x = halfWidth;
    46             } else if (pos_x > (winSize.width - halfWidth)) {
    47                 pos_x = winSize.width - halfWidth;
    48             }
    49 
    50             if (pos_y < halfHeight) {
    51                 pos_y = halfHeight;
    52             } else if (pos_y > (winSize.height - halfHeight)) {
    53                 pos_y = winSize.height - halfHeight;
    54             }
    55 
    56             this.body.setPos(cc.p(pos_x, pos_y));
    57 
    58         }
    59     })  ;

    第5~23行:设置飞机的物理引擎特性,这里使用物理引擎的目的是进行精确碰撞检测。
    第27~32行:创建飞机后面(飞机的尾部/尾巴这里)喷射烟雾例子效果。
    第29~30行:设置烟雾粒子在飞机的下面(尾部)。
    第32行:由于粒子设计人员设计的粒子比较大,通过第32行代码ps.setScale(0.5)缩小一半。
    第33行:this.addChild(ps)是将粒子系统添加到飞机精灵上。


    这里附加一点子弹精灵Bullet及shape相关的信息:

    Bullet的shape定义就比较简单(直接一个矩形)。
    圆形的定义可参见Enemy.js中陨石和行星的定义;
    多边形的定义可参见Enemy.js或Fighter.js中飞机的定义;
    简单矩形的定义可参见Bullet.js中子弹的定义。

  • 相关阅读:
    ant构建Jmeter脚本的build文件配置(build.xml)
    Jmeter加密函数__digest总结
    Python接口自动化测试脚本-实现禅道登录
    转载:windows下安装mac虚拟机(Vmvare+mac)
    jstat监控JVM内存使用、GC回收情况
    Pycharm添加Python文件模板
    总结:Jmeter常用参数化方式
    Mysql添加索引及索引的优缺点
    Mysql常用语法
    性能测试中TPS上不去的原因
  • 原文地址:https://www.cnblogs.com/moonlightpoet/p/5715647.html
Copyright © 2011-2022 走看看