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中子弹的定义。

转载于:https://www.cnblogs.com/moonlightpoet/p/5715647.html

LostRoutes项目日志——玩家飞机精灵Fighter解析相关推荐

  1. LostRoutes项目日志——敌人精灵Enemy解析

    Enemy类在Enemy.js中,类Enemy类继承自PhysicsSprite,以便于可以使用物理引擎中的一些特性. 原版的Enemy.js: 1 var Enemy = cc.PhysicsSpr ...

  2. C语言关于飞机躲子弹的游戏,团队项目(2.1) -- 飞机躲避小游戏

    这个项目开始于2019年下半年,也就是大二上长学期的时候,当时申报了一个校级srtp项目,自拟题为"基于瞳孔检测的注意力检测方法研究",而这一部分是作为最后眼控展示的一个小平台.有 ...

  3. Django项目日志概述

    Django项目日志概述 本文环境python3.5.2,Django版本1.10.2 Django项目中日志的实现 Django项目中使用的日志,使用了Python标准库中的logging模块进行实 ...

  4. 学习Coding-iOS开源项目日志(二)

    继续前篇:<学习Coding-iOS开源项目日志(一)>,接着本第二篇<学习Coding-iOS开源项目日志(二)>讲解Coding-iOS开源项目. 前言:作为初级程序员,想 ...

  5. 我的游戏学习日志17——游戏元素的解析(1)

    我的游戏学习日志17--游戏元素的解析(1) 1.沉浸元素 定义:在一般的定义上指通过物理方式和想象进入一个与通常环境不同的场景.(也被也称"置入"和"临场") ...

  6. python如何实现飞机上下移动_python项目实战 打飞机(二)

    叁研伴学路,良语暖人心.考研路漫漫,功在每日勤.日推价值文,资料资讯精.何不速关注,大业或可行? 有了上一节的一些介绍,大家应该对pygame不陌生了,所以后面怎么查文档就不介绍了,主要是完成这个项目 ...

  7. 项目日志记录规范和标准

    <项目日志记录规范和标准>(第二版2017年10月) 第一版(2013年3月)参见这里. 一.说明 日志分类如下: 1. 面向问题排查的日志 2. 面向提醒或告警的日志 3. 面向调试和测 ...

  8. Python项目实战:飞机大战(一)

    一.项目实战 -- 飞机大战 目标 强化 面向对象 程序设计 体验使用 pygame 模块进行 游戏开发 实战步骤 pygame 快速体验 飞机大战 实战 确认模块 -- pygame pygame ...

  9. 【django】配置项目日志【5】

    一.配置项⽬⽇志 # 配置项目日志 LOGGING = {'version': 1,'disable_existing_loggers': False, # 是否禁用已经存在的日志器'formatte ...

最新文章

  1. 图的最短路径dijkstra算法
  2. DSSM(DEEP STRUCTURED SEMANTIC MODELS)
  3. 浅析网站搭建时所遇到的这样或那样的问题
  4. 现金流量表的编制方法及程序
  5. 解决Tomcat下IntelliJ IDEA报错java.lang.NoClassDefFoundError: javax/servlet/ServletContextListener
  6. 全球 MEDC 2007 举行日期
  7. centos7部署两个mysql_一文掌握mysql实用工具--pt-online-schema-change、innotop部署
  8. python return返回值_Python return语句 函数返回值
  9. ProxyToken:微软 Exchange 服务器中的认证绕过新漏洞,可窃取用户邮件
  10. R语言空间插值的几种方法及案例应用
  11. redhat7linux防火墙开放端口,Redhat7 firewall(防火墙)
  12. Socket网络编程
  13. Unity 批量复制transform值,并批量粘贴
  14. 校友故事|我在科大感受理工科“严谨的浪漫主义”
  15. ubuntu流量监控_ubuntu linux下测试实时网络网速流量监控的几种小工具命令方法
  16. MFC---List Control的用法总结
  17. 大数据安全相关概念(上)
  18. MATLAB Support Package Installer无法正常打开的问题
  19. 科技云报道荣膺全球云计算大会“云鼎奖”2013-2022十周年特别贡献奖
  20. 2022年电设省赛碎碎念【C题小车题省一】

热门文章

  1. 2021年中式烹调师(中级)报名考试及中式烹调师(中级)考试总结
  2. 交换机端口的PVID
  3. 微信小程序实现图片多选择 || 选择城市
  4. 达特茅斯学院计算机phd,2020年达特茅斯学院博士申请时间
  5. python编写一个班级类 点名簿_2014年长春市高中毕业班第四次调研测试
  6. 一字一句体验语言的魅力-2:80386-datasheet翻译学习-第一章完
  7. k8s删除node节点
  8. Android Oss上传文件简单使用
  9. 欧盟委员会敲定新SCC,以恢复正常的欧盟-美国数据传输协议
  10. Android开发收音机功能,基于Android系统的FM收音机功能的设计与实现