《塔防类手游开发教程》 第六节 在用户选中坐标建塔
来源:互联网 发布:中国电信大数据事业部 编辑:程序博客网 时间:2024/06/18 10:39
1、放置炮塔,在规定的区域进行放置,不能重复放置,不能再其他的地方放置该炮塔;
代码: TMXTiledMap * map=(TMXTiledMap *)this->getChildByTag(888);
CCLOG("您点击了地图的第%d行,第%d列,这个位置地图编号%d",nowRow,nowCol,
map->getLayer("bg")->getTileGIDAt(Vec2(nowCol,nowRow))
);
int tid=map->getLayer("bg")->getTileGIDAt(Vec2(nowCol,nowRow));
bool canTouch=false;
//如果这个块是可以放塔的则弹出炮塔选择的面板
if(!map->getPropertiesForGID(tid).isNull())
{
auto tileTemp = map->getPropertiesForGID(tid).asValueMap();
//判断编号为gid的tiled有没有属性
if(!tileTemp.empty())
{ //tileTemp.at("canTouch").asInt()
canTouch=true;
CCLOG("这里可以放塔gid canTouch=%d",tileTemp.at("canTouch").asInt());
}
}
//这个位置是否已经放过塔
if (mapinfo[nowRow][nowCol]>0) {
canTouch=false;
}
//
if(canTouch)
{
CCLOG("塔的选择面板");
addTDSelect(8-nowRow,nowCol);
}else
{
auto tips = Sprite::createWithSpriteFrameName("no.png");
tips->setAnchorPoint(Vec2(0,0));
tips->setPosition(nowCol*71,(8-nowRow)*71);
this->addChild(tips);
tips->runAction(
Sequence::create(DelayTime::create(0.8f),
CallFunc::create(CC_CALLBACK_0(Sprite::removeFromParent, tips)),
NULL));
}
2、移除炮塔:
代码:
//移除建塔面板
if(this->getChildByTag(1001)!=NULL)
{
this->removeChildByTag(1001);
}
3、添加塔的选择面板,在可选的地方才能建塔;
//添加塔的选择面板
void GameScene::addTDSelect(int r,int c)
{
auto Image= Sprite::createWithSpriteFrameName("towerPos.png");
int height=Image->getContentSize().height;
int width=Image->getContentSize().width;
auto bt01= Sprite::createWithSpriteFrameName("ArrowTower1.png");
auto bt01_select= Sprite::createWithSpriteFrameName("ArrowTower1.png");
bt01_select->setScale(1.1);
auto bt02= Sprite::createWithSpriteFrameName("AttackTower1.png");
auto bt02_select= Sprite::createWithSpriteFrameName("AttackTower1.png");
bt02_select->setScale(1.1);
auto bt03= Sprite::createWithSpriteFrameName ("MultiDirTower1.png");
auto bt03_select= Sprite::createWithSpriteFrameName ("MultiDirTower1.png");
bt03_select->setScale(1.1);
//将3个Sprite转为Menu接收用户事件
auto mitem01=MenuItemSprite::create(bt01, bt01_select, CC_CALLBACK_1(GameScene::selectTD, this));
auto mitem02=MenuItemSprite::create(bt02, bt02_select, CC_CALLBACK_1(GameScene::selectTD, this));
auto mitem03=MenuItemSprite::create(bt03, bt03_select, CC_CALLBACK_1(GameScene::selectTD, this));
mitem01->setTag(10);
mitem02->setTag(11);
mitem03->setTag(12);
mitem01->setAnchorPoint(Vec2(1,0));
mitem02->setAnchorPoint(Vec2(0.5,0));
mitem03->setAnchorPoint(Vec2(0,0));
auto menuTD=Menu::create(mitem01,mitem02,mitem03,nullptr);
// Image->addChild(bt01);
// Image->addChild(bt02);
// Image->addChild(bt03);
menuTD->setPosition(Vec2::ZERO);
Image->addChild(menuTD);
mitem01->setPosition(Vec2(0,height));
mitem02->setPosition(Vec2(width/2,height));
mitem03->setPosition(Vec2(width,height));
Image->setTag(1001);
this->addChild(Image);
Image->setAnchorPoint(Vec2(0,0));
Image->setPosition(c*71,r*71);
}
- 《塔防类手游开发教程》 第六节 在用户选中坐标建塔
- 《塔防类手游开发教程》 第五节 获取用户建塔行列
- Django开发教程 第六节 表单
- Cocos2d-x开发教程 第六节 UI控件(Label)
- 第三章 第六节 转换模型坐标到视点坐标
- IOS开发---获取用户当前地理坐标
- PALM开发教程-第六章 控件
- 安卓开发获取用户点击屏幕坐标
- 安卓开发获取用户点击屏幕坐标
- IOS开发实例-获取用户当前地理坐标
- IOS开发实例-获取用户当前地理坐标
- IOS开发---获取用户当前地理坐标(最新)
- Vuforia在Unity中屏幕坐标转世界坐标,并使用lineRender画线,手指画线,选中物体并拖拽
- Android OpenGL ES 简明开发教程_3D坐标变换
- PSP开发教程第六课----如何加入音乐
- Android游戏开发系列教程第六讲(菜单对话框)
- Unity3d用户教程手册Android 开发入门
- Silverlight教程第六部分:使用用户控件实现主从表场景
- Controller和交换机之间的消息
- linux 命令之ldd
- django 上传图片 有时候出现叉叉的情况
- java创建线程两种方法
- 信用评分及模型原理解析(以P2P网贷为例)
- 《塔防类手游开发教程》 第六节 在用户选中坐标建塔
- LoadRunner参数的简单设置
- 确定需要改变几个位,才能把整数a变成整数b
- (素材源码)猫猫学IOS(三十五)UI之Quartz2D仿真支付宝手势解锁_代理获得密码。
- 《塔防类手游开发教程》 第七节 炮塔发射子弹
- Java面向对象(上)
- Recent键及状态栏屏蔽
- 《塔防类手游开发教程》 第八节 炮塔子弹与怪物碰撞添加爆炸动画
- Android存储方式