接下来我们为飞机加入子弹,首先创建一个BulletLayer:

module("BulletLayer",package.seeall) 

local bulletBatchNode = nil
local plane = nil
local bulletArray = {}
local bulletLayer = nil function create()
bulletLayer = CCLayer:create()
bulletBatchNode = CCSpriteBatchNode:create("Images/shoot.png")
bulletLayer:addChild(bulletBatchNode);
return bulletLayer
end

 

先解释一下定义的那几个变量吧。

bulletBatchNode 是用来管理子弹精灵的。对于CCSpriteBatchNode不太熟悉。请自己去查查资料。

plane是指我们的主角,在设置子弹位置的时候须要飞机的大小。

bulletArray是用来存放子弹的一个table,在做实体碰撞的时候会用上。

如今来创建一个子弹吧

function addBullet()
local planeX = plane:getPositionX()
local planeY = plane:getPositionY()
local bullet = CCSprite:createWithSpriteFrameName("bullet1.png")
local bulletPostion = ccp(planeX,planeY + plane:getContentSize().height / 2)
bullet:setPosition(bulletPostion)
bulletBatchNode:addChild(bullet) local length = visibleSize.height + bullet:getContentSize().height / 2 - bulletPostion.y;
local velocity = 250 --飞行速度
local moveTime = length/velocity
local actionMove = CCMoveTo:create(moveTime,ccp(bulletPostion.x,visibleSize.height + bullet:getContentSize().height / 2)) local actionDone = CCCallFuncN:create(removeBullet)
local sequence = CCSequence:createWithTwoActions(actionMove,actionDone)
bullet:runAction(sequence)
table.insert(bulletArray,bullet)
end

 子弹有了。图层有了,怎样会将子弹不断的加入到图层上呢?当然是用scheduler。

local addBulletEntry = nil
function stratOneShoot()
if addDoulbeBulletEntry ~= nil then
stopDoubleShoot()
end
addBulletEntry = CCDirector:sharedDirector():getScheduler():scheduleScriptFunc(addBullet, 0.2,false)
end

有了開始射击,自然应该有停止射击

function stopOneShoot()
if addBulletEntry ~= nil then
CCDirector:sharedDirector():getScheduler():unscheduleScriptEntry(addBulletEntry)
addBulletEntry = nil
end
end

 

好了。如今是不是看见子弹满天飞了。 

 

cocos2d-x(十一)Lua开发飞机大战-6-加入子弹的更多相关文章

  1. cocos2d-x(十二)Lua开发飞机大战-7-加入敌机

    Lua本是一门面向过程的解释性语言.但在开发过程中有很多人还是习惯于面向对象编程.在Lua中我们能够使用table模拟类.只是写起来不太爽(特别是在继承一些C++类的时候).通过查看演示样例.发现co ...

  2. Python之游戏开发-飞机大战

    Python之游戏开发-飞机大战 想要代码文件,可以加我微信:nickchen121 #!/usr/bin/env python # coding: utf-8 import pygame impor ...

  3. [置顶] 【cocos2d-x入门实战】微信飞机大战之六:子弹层的处理

    这一篇将会处理完子弹层的其他要点. 1.子弹的初始位置 子弹的初始位置在飞机的机头位置,因为飞机在游戏的过程中会随着玩家的触摸而改变其位置,所以,子弹的初始位置只能以当前飞机位置为基准进行添加. CC ...

  4. IOS学习之路五(SpriteKit 开发飞机大战小游戏一)

    参考SpriteKit 创建游戏的教程今天自己动手做了一下,现在记录一下自己怎么做的,今天之做了第一步,一共有三个部分. 第一步,项目搭建. 项目所用图片资源:点击打开链接 1.在Xcode打开之后, ...

  5. 纯JavaScript开发飞机大战项目

    开发工具: HBuilder 编程语言:JavaScript 其他技术:Html + Css 项目截图:   视频:   源代码:   在线观看地址: (暂无) 百度网盘下载地址: 请加QQ群:915 ...

  6. javascript飞机大战-----005创建子弹对象2

    子弹销毁 /* 创建子弹:因为子弹不是只创建一个所以要用构造函数 注意一点:子弹发射的位置应该是英雄机的正中央的位置,所以需要传点东西进来 */ function Bullet(l,t){ this. ...

  7. javascript飞机大战-----004创建子弹对象

    /* 创建子弹:因为子弹不是只创建一个所以要用构造函数 注意一点:子弹发射的位置应该是英雄机的正中央的位置,所以需要传点东西进来 */ function Bullet(l,t){ this.l = l ...

  8. [Unity3D]Unity3D游戏开发之飞机大战项目解说

    大家好,我是秦元培,欢迎大家继续关注我的博客,我的博客地址是blog.csdn.net/qinyuanpei. 首先感谢大家对我博客的关注,今天我想和大家分享的是一个飞机大战的项目.这是一个比較综合的 ...

  9. Lakeshore 中文开发界面,示例项目,飞机大战 等 Lakeshore Chinese development interface, sample project, aircraft war, etc

    Lakeshore 中文开发界面,示例项目,飞机大战 等 Lakeshore Chinese development interface, sample project, aircraft war, ...

随机推荐

  1. java反射实现接口重试

    工具类: import java.lang.reflect.Method; public class RetryUtil { private static ThreadLocal<Integer ...

  2. 【JavaScript 从零开始】 原始值和对象引用、类型转换

    JavaScript 中的原始值(undefined.null . 布尔值.数值和字符串)于对象(包括数组和函数)有着根本区别. 原始值是不可更改的:任何方法都无法改变(或“突变”)一个原始值. 对于 ...

  3. Error: EACCES: permission denied, access '/usr/local/lib/node_modules'

    sudo chown -R username /usr/local/lib/node_modules 注:username要具有/usr/local/lib/node_modules的读写权限

  4. C语言读取配置文件

    自从大学学完C之后,就再也没用过它了, 在网上找代码,七拼八凑之后,终于成形~~勉强能用,不喜勿喷,^_^! int GetValue(const wchar_t *key, wchar_t *val ...

  5. 微服务与DevOps关系

    随着IT技术的不断发展,从传统的IT建设模型逐步向新型IT建设模型过渡,建设模式的改变,必然影响应用系统的全生命周期.应用系统的建设经过单体应用.SOA应用.逐步走向微服务应用,至于何为单体应用.SO ...

  6. hdu 1226

    超级密码 Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Subm ...

  7. 传输层协议TCP和UDP分析

    分析所用软件下载:Wireshark-win32-1.10.2.exe 阅读导览 1. 分析应用TCP协议,以及TCP链接管理 2. 分析应用UDP协议 分析要求 (1)TCP部分: 学习3CDaem ...

  8. mysql网页客户端工具

    mysql数据库的远程管理,云服务器数据库的管理监控等都可以使用 TreeSoft,  TreeSoft数据库管理系统使用JAVA开发,采用稳定通用的springMVC +JDBC架构,实现基于WEB ...

  9. angular自定义指令 repeat 循环结束事件;limitTo限制循环长度、限定开始位置

    1.获取repeat循环结束: 自定义指令: .directive('repeatFinish', function () { return { link: function (scope, elem ...

  10. react 使用map 的时候提示 没有返回值

    因为map 的函数体里 用了if判断,在if块之外return 一个值就可以了 <div className="service-entry"> {!!services ...