这周开始做的捕鱼达人的游戏,再有以前飞机大战的基础上,这次上手捕鱼达人是很容易的,捕鱼达人的关键点
1点击屏幕可以获得角度。炮台可以用点击的角度来控制
2点击可以切换炮台
3鱼设计为一个类,所有的鱼来用一个对象,用C++面向对象编程
下面来说下这个游戏的实现过程。
加载背景按钮的什么的我就不说了
重点是点击屏幕获得旋转的位置。
void GameScene::onTouchEnded(Touch* touch, Event* event)
{
auto location = touch->getLocation();
/*获得距离*/
auto radian = atan2(location.y - 21.6f, location.x - 480.0f);
auto inclination = radian * 180 / 3.14;
auto aaa = -(inclination)+90;
if (aaa <= 70 && aaa >= -70) {
rotation = aaa;
cannonSptite->setRotation(aaa);
but->shoutButtle(location);
but->buttt()->setRotation(rotation);
}
}
还有一点就是没条鱼都有自己对的方向
不是左右浮动的,这就是要对鱼设置角度和偏移量
int ss = rand() % 800 + 0;
mmm = random() % 7 + 3;
auto move = MoveTo::create(mmm, Vec2(-(shipSmall->getContentSize().width / 2+200), ss));
auto radian = atan2(-shipSmall->getContentSize().width / 2 - visibleSize.width + shipSmall->getContentSize().width / 2, -shipSmall->getPositionY() + ss);
auto inclination = radian * 180 / 3.14;
rotation = (inclination)+90;
shipSmall->setRotation(rotation);
shipSmall->runAction(move);
还有就是对与添加动画,要像鱼动作。
Animation* animation = Animation::create();
animation->setDelayPerUnit(0.1f);
animation->addSpriteFrame(ship2->getSpriteFrameByName("JadePerch_actor_001.png"));
animation->addSpriteFrame(ship2->getSpriteFrameByName("JadePerch_actor_002.png"));
animation->addSpriteFrame(ship2->getSpriteFrameByName("JadePerch_actor_003.png"));
animation->addSpriteFrame(ship2->getSpriteFrameByName("JadePerch_actor_004.png"));
animation->addSpriteFrame(ship2->getSpriteFrameByName("JadePerch_actor_005.png"));
Animate* animate = Animate::create(animation);
shipSmall->runAction(RepeatForever::create(animate));
还有就是添加polit 文件的时候看里面的文件,如果有中文的可以去掉。
ship2 = SpriteFrameCache::getInstance();
ship2->addSpriteFramesWithFile("FishActor.plist", "FishActor.png");
记得添加头文件
SpriteFrameCache* ship2;
对于逻辑思路都是很懂,对于一些算法还是不会。
暴露的问题就是还有很多的不熟。
本文介绍了使用cocos2d-x开发捕鱼达人游戏的过程。内容包括:通过点击屏幕控制炮台角度,切换炮台,以面向对象的方式设计鱼类,以及实现鱼的方向、动画效果和处理中文文件问题。在开发中,虽然逻辑思路清晰,但部分算法仍需深入学习。

3886

被折叠的 条评论
为什么被折叠?



