cocos2d-x(十一)Lua开发飞机大战-6-加入子弹
接下来我们为飞机加入子弹,首先创建一个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-加入子弹的更多相关文章
- cocos2d-x(十二)Lua开发飞机大战-7-加入敌机
Lua本是一门面向过程的解释性语言.但在开发过程中有很多人还是习惯于面向对象编程.在Lua中我们能够使用table模拟类.只是写起来不太爽(特别是在继承一些C++类的时候).通过查看演示样例.发现co ...
- Python之游戏开发-飞机大战
Python之游戏开发-飞机大战 想要代码文件,可以加我微信:nickchen121 #!/usr/bin/env python # coding: utf-8 import pygame impor ...
- [置顶] 【cocos2d-x入门实战】微信飞机大战之六:子弹层的处理
这一篇将会处理完子弹层的其他要点. 1.子弹的初始位置 子弹的初始位置在飞机的机头位置,因为飞机在游戏的过程中会随着玩家的触摸而改变其位置,所以,子弹的初始位置只能以当前飞机位置为基准进行添加. CC ...
- IOS学习之路五(SpriteKit 开发飞机大战小游戏一)
参考SpriteKit 创建游戏的教程今天自己动手做了一下,现在记录一下自己怎么做的,今天之做了第一步,一共有三个部分. 第一步,项目搭建. 项目所用图片资源:点击打开链接 1.在Xcode打开之后, ...
- 纯JavaScript开发飞机大战项目
开发工具: HBuilder 编程语言:JavaScript 其他技术:Html + Css 项目截图: 视频: 源代码: 在线观看地址: (暂无) 百度网盘下载地址: 请加QQ群:915 ...
- javascript飞机大战-----005创建子弹对象2
子弹销毁 /* 创建子弹:因为子弹不是只创建一个所以要用构造函数 注意一点:子弹发射的位置应该是英雄机的正中央的位置,所以需要传点东西进来 */ function Bullet(l,t){ this. ...
- javascript飞机大战-----004创建子弹对象
/* 创建子弹:因为子弹不是只创建一个所以要用构造函数 注意一点:子弹发射的位置应该是英雄机的正中央的位置,所以需要传点东西进来 */ function Bullet(l,t){ this.l = l ...
- [Unity3D]Unity3D游戏开发之飞机大战项目解说
大家好,我是秦元培,欢迎大家继续关注我的博客,我的博客地址是blog.csdn.net/qinyuanpei. 首先感谢大家对我博客的关注,今天我想和大家分享的是一个飞机大战的项目.这是一个比較综合的 ...
- Lakeshore 中文开发界面,示例项目,飞机大战 等 Lakeshore Chinese development interface, sample project, aircraft war, etc
Lakeshore 中文开发界面,示例项目,飞机大战 等 Lakeshore Chinese development interface, sample project, aircraft war, ...
随机推荐
- [C语言] 数据结构-预备知识动态内存分配
动态内存分配 静态内存分配数组 int a[5]={1,2,3,4,5} 动态内存分配数组 int len=5; int *parr=(int *)malloc(sizeof(int) * len) ...
- hdu 1430
魔板 Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submiss ...
- VMWare安装Mac OS X
原文作者 谷月K 2016.08.16 18:55 字数3473 随着iPhone.iPad.Mac等苹果产品越来越火爆,越来越多的初学者想要了解和尝试苹果平台,包括苹果操作系统Mac OS X.苹果 ...
- 移动web模拟客户端实现多方框输入密码效果
不知道怎么描述标题,先看截图吧,大致的效果就是一个框输入一位密码. 最开始实现的思路是一个小方框就是一个type为password的input,每输入一位自动跳到下一位,删除一位就自动跳到前一位,an ...
- LOJ#6463 AK YOI 树分治+线段树合并
传送门 既然是树上路径统计问题,不难想到要使用树分治,这里以点分治为例 由点分治的性质,每层只需要考虑经过重心的路径 因为需要维护路径长度在一定范围内的最大权值和,所以要用一个数据结构维护一下到根节点 ...
- vue三要素及底层实现机制
深入解析Vue 我们首先来熟悉一下我们这个文档所学习内容的流程. 先对比一下jQuery和Vue的区别,再讲述Vue的MVVM模型,接着讲解Vue的实现流程. 当然,我是不相信没有对比哪来的伤害,没有 ...
- GIT 这么好用,为什么还是有人不知道怎么用它提交代码?
客户端代码管理工具的变迁: 从 SVN 到 GIT 截止目前,新版的 APICloud Studio 2 仍然处于公测期.APICloud Studio 2 的代码管理客户端,由 SVN 改为了 GI ...
- Android上实现视频录制
首先,我们肯定要用到摄像头,因此需要在Manifest文件中声明使用权限: <uses-permission android:name="android.permission.CAME ...
- canvas验证码 - 随机字母数字
基于canvas制作随机生成数字英文组合验证码效果,点击或刷新会自动重组.输入验证码提交验证效果代码. <div class="verification"> <i ...
- sql 中的分隔符
1.通过分隔符可以将其中的内容作为一个整体的字符串进行处理. 假设数据库中有一个表,名为user info,注意这个名字,user 和 info 中间存在一个空格. 如果直接写如下查询,会报错,可能会 ...