LostRoutes项目日志——玩家飞机精灵Fighter解析
Fighter类的定义在Fighter.js中,Fighter类继承与PhysicsSprite。
原版的Fighter.js:
var Fighter = cc.PhysicsSprite.extend({
hitPoints: true, //当前的生命值
space: null, //所在物理空间
ctor: function (spriteFrameName, space) {
this._super(spriteFrameName);
this.space = space;
var verts = [
-94, 31.5,
-52, 64.5,
57, 66.5,
96, 33.5,
0, -80.5];
this.body = new cp.Body(1, cp.momentForPoly(1, verts, cp.vzero));
this.body.data = this;
this.space.addBody(this.body);
var shape = new cp.PolyShape(this.body, verts, cp.vzero);
shape.setElasticity(0.5);
shape.setFriction(0.5);
shape.setCollisionType(Collision_Type.Fighter);
this.space.addShape(shape);
this.hitPoints = Fighter_hitPoints;
var ps = new cc.ParticleSystem(res.fire_plist);
//在飞机下面.
ps.x = this.getContentSize().width / 2;
ps.y = 0;
//ps.setRotation(180.0);
ps.setScale(0.5);
this.addChild(ps);
},
//重写setPosition
setPosition: function (newPosition) {
var halfWidth = this.getContentSize().width / 2;
var halfHeight = this.getContentSize().height / 2;
var pos_x = newPosition.x;
var pos_y = newPosition.y;
if (pos_x < halfWidth) {
pos_x = halfWidth;
} else if (pos_x > (winSize.width - halfWidth)) {
pos_x = winSize.width - halfWidth;
}
if (pos_y < halfHeight) {
pos_y = halfHeight;
} else if (pos_y > (winSize.height - halfHeight)) {
pos_y = winSize.height - halfHeight;
}
this.body.setPos(cc.p(pos_x, pos_y));
}
}) ;
第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中子弹的定义。
LostRoutes项目日志——玩家飞机精灵Fighter解析的更多相关文章
- LostRoutes项目日志——敌人精灵Enemy解析
Enemy类在Enemy.js中,类Enemy类继承自PhysicsSprite,以便于可以使用物理引擎中的一些特性. 原版的Enemy.js: var Enemy = cc.PhysicsSprit ...
- LostRoutes项目日志——在main.js中添加多分辨率适配
初始的Cocos2d-JS项目中的main.js代码的内容为: /** * A brief explanation for "project.json": * Here is th ...
- LostRoutes项目日志——编辑project.json
第一个Scene编译后运行会报错: Uncaught TypeError: Cannot read property 'style' of null 这是因为没有在project.json中包含已经编 ...
- 学习Coding-iOS开源项目日志(二)
继续前篇:<学习Coding-iOS开源项目日志(一)>,接着本第二篇<学习Coding-iOS开源项目日志(二)>讲解Coding-iOS开源项目. 前言:作为初级程序员,想 ...
- 转 web项目中的web.xml元素解析
转 web项目中的web.xml元素解析 发表于1年前(2014-11-26 15:45) 阅读(497) | 评论(0) 16人收藏此文章, 我要收藏 赞0 上海源创会5月15日与你相约[玫瑰里 ...
- 学习Coding-iOS开源项目日志(五)
继续,接着前面第四篇<学习Coding-iOS开源项目日志(四)>讲解Coding-iOS开源项目. 前 言:作为初级程序员,想要提高自己的水平,其中一个有效的学习方法就是学习别人好的项目 ...
- 学习Coding-iOS开源项目日志(一)
前言:作为初级程序员,想要提高自己的水平,其中一个有效的学习方法就是学习别人好的项目.本篇开始会陆续更新本人对github上开源的一个很不错的项目的一点点学习积累.也就是,探究着别人写的源码,我学到了 ...
- 学习Coding-iOS开源项目日志(三)
继续前两篇,接着本第三篇<学习Coding-iOS开源项目日志(三)>讲解Coding-iOS开源项目. 前 言:作为初级程序员,想要提高自己的水平,其中一个有效的学习方法就是学习别人好的 ...
- 采用Spring AOP+Log4j记录项目日志
转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/6567672.html 项目日志记录是项目开发.运营必不可少的内容,有了它可以对系统有整体的把控,出现任何问题 ...
随机推荐
- 初学JDBC的一些总结(二)
一.简单介绍PreparedStatement 和Statement的区别: PreparedStatement是用来执行SQL查询语句的API之一,Java提供了 Statement.Prepare ...
- Python基础-字符串、集合类型、判断、深拷贝与浅拷贝、文件读写
字符串 1.定义三个变量: 2.交换两个变量值 1)引入第三个变量: 2)Python引入第三方变量: 3)不引入第三方变量: 3. isalpha 是否是汉字或字母 4.Isalnum 是否是汉字 ...
- 在 fragment 里面调用 findViewById
public class CompanyListFragment extends Fragment { private Activity activity; private ListView c ...
- db2 runstats和reorg
当数据库里某张表上有大量插入操作时,需要在表上做 RUNSTATS 命令保证数据库掌握准确的统计信息. 当数据库里某张表中的记录变化很大时(大量插入.删除.更新操作),需要在表上做 REORG 和 R ...
- JDBC(8)—Blob
Blob LOB,即:Large Objects(大对象),是用来存储大量的二进制和文本数据的一种数据类型(一个lob字段可以存储多达四个G的数据).LOB分为两种类型:内部LOB和外部LOB --内 ...
- pygame 笔记-3 角色动画及背景的使用
上二节,已经知道如何控制基本的运动了,但是只有一个很单调的方块,不太美观,本节学习如何加载背景图,以及角色的动画. 素材准备:(原自github) 角色动画的原理:动画都是一帧帧渲染的,比如向左走的动 ...
- android: 在APP中显示高德地图SDK
一.搭建环境 参考资料:http://lbs.amap.com/api/android-sdk/guide/create-project/android-studio-create-project ...
- OHDSI——数据标准化
Home › Data Standardization Data Standardization Data standardization is the critical process of bri ...
- web调用本地exe应用程序并传入参数
从网页中通过自定义URL Protocol调用本地程序,需要将协议写到注册表中.浏览器在解析到自定义URL Protocol之后,寻找注册表,通过注册表启动相应的程序并传入参数.协议里面需要记录本地程 ...
- 洛谷 P1739 表达式括号匹配
题目链接https://www.luogu.org/problemnew/show/P1739 题目描述 假设一个表达式有英文字母(小写).运算符(+,—,*,/)和左右小(圆)括号构成,以“@”作为 ...