zoukankan      html  css  js  c++  java
  • Android cocos2d 弹弓游戏 Catapult 源代码


    根据下面两篇文章, 我一步步实践, 成功让程序在 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




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

    现在把源代码提供给大家, 可以从下面的 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); 
    		} 
    	} 

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







  • 相关阅读:
    WebRTC学习资料大全
    WebRTC学习与DEMO资源一览
    WebRTC MCU( Multipoint Conferencing Unit)服务器调研
    基于Kurento的WebRTC移动视频群聊技术方案
    使用 nginx 和 rtmp 插件搭建视频直播和点播服务器
    利用nginx搭建RTMP视频点播、直播、HLS服务器
    几个学习流媒体的案例代码网址
    rtmp与hls流媒体服务器搭建:ubuntu下Nginx搭建初探与rtmp-module的添加
    Neo4j模糊查询及分页查询
    自定义中文全文索引
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3045626.html
Copyright © 2011-2022 走看看