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

?

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

?

原文地址:https://www.cnblogs.com/mqxnongmin/p/10706452.html

时间: 2024-10-10 07:32:02

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

python开发飞机大战

1.使用pygame包,使用Python3.5版本2.达到的效果是: 出现一个窗口,显示一张背景图片,出现一架敌机和一架自己的飞机 敌机在最上面,左右移动,随机发子弹,自己的飞机使用键盘左右键左右移动,使用空格键发子弹 当自己的飞机发出的子弹碰到敌机发出的子弹时,敌机的子弹消失 当自己的飞机发出的子弹碰到敌机时,敌机原地摧毁后,再次出现开始游戏 当敌机发出的子弹碰到自己的飞机时,飞机原地摧毁,并退出游戏 3.主要涉及,飞机运动,子弹检测,子弹碰撞检测等,使用面向对象的思路 import pyga

纯JavaScript开发飞机大战项目

开发工具: HBuilder 编程语言:JavaScript 其他技术:Html + Css 项目截图: 视频: 源代码: 在线观看地址: (暂无) 百度网盘下载地址: 请加QQ群:915627672 Q群内免费领取视频教程和源码,并且站长在线免费答疑. 原地址:http://www.java520tz.com/?id=134 原文地址:https://www.cnblogs.com/skyblue-li/p/11600815.html

Python之游戏开发-飞机大战

#!/usr/bin/env python # coding: utf-8 import pygame import time import random from pygame.locals import * class Base(object): def __init__(self, x, y, imageName): self.x = x self.y = y self.imageName = imageName self.image = pygame.image.load(self.im

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

/* 创建子弹:因为子弹不是只创建一个所以要用构造函数 注意一点:子弹发射的位置应该是英雄机的正中央的位置,所以需要传点东西进来 */ function Bullet(l,t){ this.l = l;//保留一下传进来的l this.t = t;//保留一下创进来的t //初始图片 this.self = null; //子弹初始left this.left = 0; //子弹初始top this.top = 0; //子弹的速度 this.speed = 2; //子弹编号 因为在引擎里面有

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

子弹销毁 /* 创建子弹:因为子弹不是只创建一个所以要用构造函数 注意一点:子弹发射的位置应该是英雄机的正中央的位置,所以需要传点东西进来 */ function Bullet(l,t){ this.l = l;//保留一下传进来的l this.t = t;//保留一下创进来的t //初始图片 this.self = null; //子弹初始left this.left = 0; //子弹初始top this.top = 0; //子弹的速度 this.speed = 2; //子弹编号 因为在

基于Cocos2d-x-1.0.1的飞机大战游戏开发实例(下)

在飞机大战游戏开发中遇到的问题和解决方法: 1.在添加菜单时,我要添加一个有背景的菜单,需要在菜单pMenu中添加一个图片精灵,结果编译过了但是运行出错,如下图: 查了很多资料,调试了很长时间,整个人都要崩溃了. 最后发现引擎中CCMenu::itemForTouch函数中有遍历子节点的行为,但是循环中没有判断子节点类型是否为CCMenuItem.如图:码,这样一来,加入到pMenu中的图片精灵被当作菜单项取了出来使用,导致报错.老版本的果然又不完善的地方,整个人都不好了...果断修改引擎里的源

基于Cocos2d-x-1.0.1的飞机大战游戏开发实例(中)

接<基于Cocos2d-x-1.0.1的飞机大战游戏开发实例(上)> 三.代码分析 1.界面初始化 1 bool PlaneWarGame::init() 2 { 3 bool bRet = false; 4 do 5 { 6 CC_BREAK_IF(! CCLayer::init()); 7 8 _size = CCDirector::sharedDirector()->getWinSize(); 9 10 // 设置触摸可用 11 this->setIsTouchEnabled

基于Cocos2d-x-1.0.1的飞机大战游戏开发实例(上)

最近接触过几个版本的cocos2dx,决定每个大变动的版本都尝试一下.本实例模仿微信5.0版本中的飞机大战游戏,如图: 一.工具 1.素材:飞机大战的素材(图片.声音等)来自于网络 2.引擎:cocos2d-1.0.1-x-0.9.2 3.环境:vs2010 二.使用的类 1.游戏菜单界面类:PlaneWarMenu——派生自CCLayer类. 1 // 游戏菜单界面类 2 class PlaneWarMenu: public CCLayer 3 { 4 public: 5 virtual bo

微信飞机大战游戏开发

原文出自:方杰|http://fangjie.sinaapp.com/?p=366转载请注明出处 这学期上了一学期的Windows游戏开发课程,学期末的时候所以决定做一个微信飞机大战的小游戏. 不同于微信手机上的飞机大战,这是一个Win32平台下游戏.Win32项目,VS2008开发平台,利用我的老师写的TinyEngine微型游戏引擎开发. TinyEngine引擎的相关源码及介绍参见:https://github.com/JayFang1993/TinyEngine 飞机大战游戏的相关源码参