接下来我们为飞机加入子弹,首先创建一个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. iOS原生APP和H5交互-delegate和第三方

    一.原生代码中直接加载页面(拦截) 1.    具体案例 加载本地/网络HTML5作为功能介绍页 2.    代码示例 //本地 -(void)loadLocalPage:(UIWebView*)we ...

  2. 【转】jquery checkbox勾选/取消勾选的诡异问题

    转:http://www.cnblogs.com/KeenLeung/p/3799895.html 第一次执行,没问题,但第二次执行就有问题了,选择不了 prop()和attr()区别: (来源:ht ...

  3. Java泛型类型

    E element 常用于集合中表示存放元素 T type Java类 K key 键 V value 值 N number 数值类型 ? 不确定的类型 一种约定俗成吧

  4. mysql网页客户端工具

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

  5. 郭霖 - MVVM开源项目学习

    https://blog.csdn.net/guolin_blog/article/details/87900605 https://medium.com/androiddevelopers/view ...

  6. 解决文字和text-decoration:underline下划线重叠问题

    一.text-decoration:underline下划线的问题 CSS text-decoration:underline可以给内联文本增加下划线,但是,如果对细节要求较高,就会发现,下划线经常会 ...

  7. 简洁php的MVC框架

    一.文件结构 建立3个文件夹 controller文件夹存放控制器文件 view文件夹存放视图文件 model文件夹存放数据文件 建立1个index.php 作为唯一入口 二.控制器 我们在contr ...

  8. elixir case cond if

    case 允许我们对很多模式的值进行比较 直到找到匹配的 -->不要想成 switch  case iex(58)> x = 11iex(59)> case 10 do...(59) ...

  9. Ubuntu 添加删除用户 How to Add and Delete Users on Ubuntu 16.04

      Introduction One of the most basic tasks that you should know how to do on a fresh Linux server is ...

  10. 一步一步pwn路由器之radare2使用实战

    前言 本文由 本人 首发于 先知安全技术社区: https://xianzhi.aliyun.com/forum/user/5274 前文讲了一些 radare2 的特性相关的操作方法.本文以一个 c ...