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, ...
随机推荐
- iOS字体打印
//打印所以字体 NSArray *familyNames = [UIFont familyNames]; for(NSString *familyName in familyNames) ...
- 神奇的datetime和datetime,一毫秒引发的血案
今天才发现C#的datetime和sqlserver的daetime是多么的不一样.首先最小和最大值不一样这是众所周知的,其实精度也是一大坑. 比如 DateTime.Today.AddMillise ...
- git 查看和撤销
linux下文本的新建和追加内容 git cat-file -p ID可查看当前master的数据 观察Git 內部如何储存Commit 随便便抓一個 Commit 的 SHA1 开始: git ca ...
- 采用DTO和DAO对JDBC程序进行进一步优化
采用DTO和DAO对JDBC程序进行进一步优化 DTO:数据传输对象,主要用于远程调用等需要远程调用对象的地方DAO:数据访问对象,主要实现封装数据库的访问,通过它可以把数据库中的表转换成DTO类 引 ...
- sql_date
往Oracle数据库中插入日期型数据(to_date的用法) INSERT INTO FLOOR VALUES ( to_date ( '2007-12-20 18:31:34' , 'YYY ...
- 2017年CCF大数据与计算智能大赛,梳理总结新鲜出炉啦~~~
0 序言 比赛已经过去一段时间,现在才来写总结似乎有点儿晚,但是挡不住内心发出的强烈呼唤的声音,所以决定静下心来梳理一遍,查缺补漏. 参赛契机: 2017年9月偶然在学校的官方微信推送中看到2017年 ...
- 纯小白入手 vue3.0 CLI - 1 - npm 安装与初始化
node 开发环境请先自行准备 npm install -g @vue/cli 安装完成之后命令行则存在 vue 命令 vue -V 查看本地 vue 版本 vue -h 输出帮助 vue creat ...
- ubuntu将python3设为默认后再安装支持python3.x的包
简介: ubuntu默认python2.7版本,如果想要装python3.x版本,请记住python2.7版本一定不能卸载!!!但是即使我 python3.x版本安装成功,当运行python脚本时,系 ...
- Android RxJava+Retrofit完美封装
作者简介 本篇来自 小河马 的投稿,分享了自己是如何进行 RxJava+Retrofit 的封装.本文的技术点自然没话说,另外对于这种模块化的思路,希望能帮助到大家.最后提前祝大家周末愉快以及圣诞快乐 ...
- Linux kernel pwn notes(内核漏洞利用学习)
前言 对这段时间学习的 linux 内核中的一些简单的利用技术做一个记录,如有差错,请见谅. 相关的文件 https://gitee.com/hac425/kernel_ctf 相关引用已在文中进行了 ...