飞机大战开发04子弹与敌机的碰撞检测

先是敌机与玩家子弹的碰撞检测:

代码:

GameLayer.h

void GameLayer::update(float dt)
{
	for (int i = 0 ;i < m_pEnermyVec.size();i++)
	{
		Sprite * pEne = m_pEnermyVec.at(i) ;
		for (int j = 0 ; j < m_pPlayerBullet.size();j++ )
		{
			Sprite * pBul = m_pPlayerBullet.at(j) ;
			if (pEne->getBoundingBox().intersectsRect(pBul->getBoundingBox()))
			{
				pEne->stopAllActions() ;
				pBul->stopAllActions() ;
				pEne->runAction(Sequence::create(FadeOut::create(0.5f),RemoveSelf::create(true),nullptr)) ;
				pBul->runAction(RemoveSelf::create(true)) ;
				m_pEnermyVec.eraseObject(pEne) ;
				m_pPlayerBullet.eraseObject(pBul) ;
				i-- ;
				j-- ;
			}
		}
	}

}

这样游戏逻辑的基本功能就写完了,后面主要会研究下弹幕。

源码:http://pan.baidu.com/s/1bntWUC3

只有Class和Resource

时间: 2024-11-10 05:28:32

飞机大战开发04子弹与敌机的碰撞检测的相关文章

飞机大战开发05按角度发射的子弹和拖尾子弹的实现

多角度的子弹: 这个的实现可以仍然用MoveBy动作来完成,设定一个子弹偏移的角度,计算出到出屏幕,子弹在x轴和y轴上移动的距离,移动就OK了. 上代码: void GameLayer::createBulletByAngle(float angle) { Size screenSize = Director::getInstance()->getWinSize() ; Vec2 crePos = m_pPlayerPlane->getPosition() ;//子弹的初始位置 float f

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 = CCSpriteBatchNod

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; //子弹编号 因为在

cocos2dx飞机大战开发记录(1)

1.USING_NS_CC (USING_NS_CC__EXT)cocos2d命名空间(或cocos2d_ext.h) 2.CREATE_FUNC(class名) 由宏创建对象并进行内存管理 3.Layer不是Label..... 4.关于无法打开包括文件:“extensions/ExtensionMacros.h”: No such file or directory”等错误. #include "extensions/GUI/CCControlExtension/CCControlSlide

cocos2dx飞机大战开发记录(3)

1.中文乱码解决办法 在使用中文字符串时先转换为utf-8码 添加以下文件 #include "cocos2d.h"#include"convert.h"char* CN(const char* gb2312){ int len = MultiByteToWideChar(CP_ACP, 0, gb2312, -1, NULL, 0); wchar_t* wstr = new wchar_t[len + 1]; memset(wstr, 0, len + 1); M

500行代码,教你用python写个微信飞机大战

这几天在重温微信小游戏的飞机大战,玩着玩着就在思考人生了,这飞机大战怎么就可以做的那么好,操作简单,简单上手. 帮助蹲厕族.YP族.饭圈女孩在无聊之余可以有一样东西让他们振作起来!让他们的左手 / 右手有节奏有韵律的朝着同一个方向来回移动起来! 这是史诗级的发明,是浓墨重彩的一笔,是-- 在一阵抽搐后,我结束了游戏,瞬时觉得一切都索然无味,正在我进入贤者模式时,突然想到,如果我可以让更多人已不同的方式体会到这种美轮美奂的感觉岂不美哉? 所以我打开电脑,创建了一个 plan_game.py-- 先

基于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

[知了堂学习笔记]_纯JS制作《飞机大战》游戏_第3讲(逻辑方法的实现)

整体展示: 上一讲实现了诸多对象,这次我们就需要实现许多逻辑方法,如控制飞机移动,判断子弹击中敌机,敌机与英雄飞机相撞等等.并且我们在实现这些功能的时候需要计时器去调用这些方法.setInterval(fun,ms) 在调用setInterval()会返回一个类似id的字段,该字段在clearInterval(id)可以指定相应的计时器并清除 一.开始游戏 /** * 面板441*632 * 飞机 66*80 */ /** * 开始游戏 */ function startGame() { var