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 项目日志记录是项目开发.运营必不可少的内容,有了它可以对系统有整体的把控,出现任何问题 ...
随机推荐
- js,css文件更新之后,浏览器端还有缓存,久久不能消除
解决方案,每次更新之后修改下配置信息 /// <summary> /// VersionInfo 版本信息 /// </summary> public static class ...
- 【树形dp入门】没有上司的舞会 @洛谷P1352
传送门 题目描述 某大学有N个职员,编号为1~N.他们之间有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子结点的直接上司.现在有个周年庆宴会,宴会每邀请来一个职员都会增加一定的快乐指 ...
- java 多样输入框
1.不一样的输入框 输入框只能输入字母和下划线的正则表达式 <input type="text" onkeyup="this.value=this.value.re ...
- poj3468 A Simple Problem with Integers(线段树区间更新)
https://vjudge.net/problem/POJ-3468 线段树区间更新(lazy数组)模板题 #include<iostream> #include<cstdio&g ...
- React组件通信技巧
效果图 communication.gif 点击查看Github完整源码 1.父向子通信 直接标签中插入参数即可 //number只是个例子 let _number = this.state.numb ...
- 安装bootcamp时提示“找不到$winpedriver$文件夹,请验证该文件夹是否和bootcamp处于同一文件夹内?”
问题:我苹果系统是10.8.3的 装的win7 64位的! 这个bootcamp是我在别人那里拷贝的,我装的时候就这样了,但是别人装是好好的,还有我在MAC系统下载bootcamp的时候我的U盘格式是 ...
- Spring Boot参数校验
1. 概述 作为接口服务提供方,非常有必要在项目中加入参数校验,比如字段非空,字段长度限制,邮箱格式验证等等,数据校验常用到概念:JSR303/JSR-349: JSR303是一项标准,只提供规范不提 ...
- Delphi及C++Builder经典图书一览表(持续更新中2018.01.02)
序号 书名 原版书名 作者 译者 出版社 页数 年代 定价 备注 1 C++Builder 5程序设计大全 C++Builder 5 Developer's Guide Jarrod Hollingw ...
- CentOS7 使用yum命令安装Java SDK(openjdk)
CentOS 6.X 和 7.X 自带有OpenJDK runtime environment (openjdk).它是一个在linux上实现开源的java 平台. 安装方式: 1.输入以下命令,以 ...
- [Linux] - 利用ping给端口加密,限制访问
Linux中,想对特定的端口加密访问,可以使用iptables的ping方式. 作用 访问被限制的端口,必需先ping发送对应的字节包(字节包大小可自行设置,此为密钥)才能访问成功! 下边是对SSH的 ...