java弹弓类游戏_Android cocos2d 弹弓游戏 Catapult 源代码

本文介绍了如何基于Cocos2d和Box2d开发一款Android弹弓类游戏,通过引用两篇教程文章,成功在Samsung Galaxy G2上运行。提供完整源代码,并详细说明了在Eclipse中导入和运行项目的步骤,包括修改HelloWorldScene.cpp和HelloWorldScene.h,以及解决Cocos2d在Windows下的资源复制问题。文中还提到了针对Cocos2d版本更新所做的代码调整,如动作调度和触摸事件处理的改变,以及在游戏中添加重新装弹的逻辑。
摘要由CSDN通过智能技术生成

根据下面两篇文章, 我一步步实践, 成功让程序在 Samsung Galaxy G2 上运行起来, 感谢这些贡献者

http://www.raywenderlich.com/4756/how-to-make-a-catapult-shooting-game-with-cocos2d-and-box2d-part-1

http://mssyy2010.blog.51cto.com/4595971/847000

b40b4245abcaf9e6f45c46b0e244e483.png

至于程序的设计和逻辑, 上面两篇文章介绍得很清楚了

现在把源代码提供给大家, 可以从下面的 link 下载

https://github.com/PaynePan/share_src/archive/master.zip

使用方法

1)  解压到cocos 目录下一级, 比如:  d: \cocos2d-2.1rc0-x-2.1.2\catapult\

catapult 下有目录  Classes 和 proj.android

2)  import  proj.android 到 eclipse 中

3)  在 cgywin 中 运行 proj.android/build_native.sh, 生成 libgame.so

4)  再在 eclipse 下编译运行

说明

有几个注意点,说明一下

项目直接使用已经运行的 HelloWorld 改写过来,  主要就是改写  HelloWorldScene.cpp, HelloWorldScene.h

1)  build_native.sh 资源文件的 copy 部分略去

coco2dx Android 最头痛的就是 cygwin中运行 build_native.sh 复制资源文件,  那些操作和 win7 下的权限不兼容

所以去掉了 copy 部分, 反正这些文件已经在 proj.android/asset中了

2) 由于 cocos2d 也在不断改进, 现在代码与原文有两处不同

原文

CCDelayTime *delayAction = CCDelayTime::actionWithDuration(0.2f);

CCCallFunc *callSelectorAction = CCCallFunc::actionWithTarget(this, callfunc_selector(HelloWorld::resetGame));

this->runAction(CCSequence::actions(delayAction,

callSelectorAction,

NULL));

现在

scheduleOnce(schedule_selector(HelloWorld::resetGame),0.2f);

原文

CCTouch *touch = (CCTouch *)touches->anyObject();

CCPoint location = touch->locationInView(touch->view());

location = CCDirector::sharedDirector()->convertToGL(location);

改为

CCTouch* touch = (CCTouch*)( touches->anyObject() );

CCPoint location = touch->getLocation();

3) 在tick中 增加了再次装弹的逻辑

if (m_bulletBody && m_bulletJoint == NULL)

{

b2Vec2 position = m_bulletBody->GetPosition();

CCPoint myPosition = this->getPosition();

CCSize screenSize = CCDirector::sharedDirector()->getWinSize();

static int count = 0;

if ( ++count % 60 ==0) {

CCLog("++++++++after x:%f, y:%f", position.x, position.y);

if ( abs(m_bullet_position.x-position.x) < 1.5f &&

abs(m_bullet_position.y-position.y) < 1.5f ) {

attachBullet();

return;

}

m_bullet_position = position;

}

// Move the camera.

if (position.x > screenSize.width / 2.0f / PTM_RATIO)

{

myPosition.x = -MIN(screenSize.width * 2.0f - screenSize.width, position.x * PTM_RATIO - screenSize.width / 2.0f);

this->setPosition(myPosition);

}

}

现在可以简单地玩游戏了.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值