<cocos2d-x for window phone>一个简单的打地鼠游戏
<cocos2d-x for window phone>一个简单的打地鼠游戏<div class="postText"><div id="cnblogs_post_body">免责声明:本文章由fengyun1989创作,采用知识共享署名-非商业性使用-相同方式共享 2.5 中国大陆许可协议进行许可。
写在前面:最近两个月比较忙,很久没更新教程了。这么些日子,发生了不少事,WP8发布了。我的T8788也被彻底抛弃了。。。win8也RP版了。前景未卜啊。肯定不少人在迷茫了吧。我觉得呢,都是浮云,语言只是工具,能够一通百通才是王道,微软不行大不了换IOS,Android。接下来的一段时间,估计会写些win8的教程。我感觉win8和WP8有种莫名的联系,不过也道不清说不明。反正就顺着感觉来了。
本次教程写一个简单的打地鼠游戏。如果你对cocos2d-x编程不了解,可以先阅读《用cocos2d-x做一个简单的windows phone 7游戏》系列文章。不过,如果你有相关的经验就另当别论了。
程序截图:
http://pic002.cnblogs.com/images/2012/209924/2012070910283788.png
思路简介:
打地鼠主要是问题就在于地鼠出头和打地鼠的点击处理。地鼠出头有两种方法,一种是用动画,一种是用Z轴的纵向效果。动画效果的方法Nowpaper前段时间就写了这么一篇《Cocos2d-x for WindowsPhone:开发一个打地鼠游戏》,我想就不在这里啰嗦了。懒得再将这些重复的内容在做一遍。这里就介绍下Z轴的方法。
http://pic002.cnblogs.com/images/2012/209924/2012070910545591.png
只要把前景分为3块。分为上中下三块,在洞的中心分开。添加到层的时候设置Z轴,最下的最前,最上的最后。最后后的设置一块黑色的背景。两块图之间留着空间来让地鼠Sprite进行move动作。这样就能产生地鼠从洞中钻出的视觉效果了。
现在来下载需要的图片;http://dl.dbank.com/c0tayrr384
开始吧:
新建一个工程cocos2d的工程,命名为cocos2dWhacAMoleDemo。当然,因为是练习项目,所以OpenXLive没有用到。就去掉那个勾。然后修复引用。这些操作做了很多次了。不懂的建议看下以前的文章。
然后再Classes文件夹添加一个类。命名为AttackMoleScene.cs,使之继承于CCScene。修改代码如下:
<div class="cnblogs_code">namespace cocos2dWhacAMoleDemo.Classes{ class AttackMoleScene:CCScene { public AttackMoleScene() { this.addChild(AttackMoleLayer.node()); } } class AttackMoleLayer : CCLayer { public override bool init() { if (!base.init()) return false; CCSize winSize = CCDirector.sharedDirector().getWinSize(); CCSprite background = CCSprite.spriteWithFile(@"images/background"); background.position = new CCPoint(winSize.width / 2, winSize.height / 2); this.addChild(background, -3); CCSprite grassUpper = CCSprite.spriteWithFile(@"images/grass_upper"); grassUpper.position = new CCPoint(winSize.width / 2, winSize.height - grassUpper.contentSize.height / 2); this.addChild(grassUpper, -2); CCSprite grassMid = CCSprite.spriteWithFile(@"images/grass_mid"); grassMid.position = new CCPoint(winSize.width / 2, winSize.height - grassUpper.contentSize.height - grassMid.contentSize.height / 2); this.addChild(grassMid, 0); CCSprite grassLower = CCSprite.spriteWithFile(@"images/grass_lower"); grassLower.position = new CCPoint(winSize.width / 2, grassLower.contentSize.height / 2); this.addChild(grassLower, 2); return true; } public new static AttackMoleLayer node() { AttackMoleLayer layer = new AttackMoleLayer(); if (layer.init()) return layer; return null; } }}
页:
[1]