文档章节

cocos2d-x 摇杆(二)

BingzhaoChen
 BingzhaoChen
发布于 2015/06/22 22:57
字数 269
阅读 27
收藏 0


根据上一篇内容进行改进

Control.h

增加以下内容

CCSprite* main_tank;
void control_update(float dt);



Control.cpp

void Control::control_update(float dt)
{
	float move_x=cen->getPositionX()-origin.x;//摇杆相对移动X轴
	float move_y=cen->getPositionY()-origin.y;//摇杆相对移动y轴
	if(isOnControl&&move_y!=0&&move_x!=0)//摇杆有移动时
	{
		float ata=atan2(move_x, move_y);//换取遥感相对移动角度
		ata=ata/M_PI;//角度数值化
		//判断,确定方向
		if(ata>-0.25&&ata<0.25)
		{
			main_tank->setRotation(0);
			main_tank->setPositionY(main_tank->getPositionY()+1);
		//	CCLOG("top");
		}

		if(ata>0.25&&ata<0.75)
		{

			main_tank->setRotation(90);
			main_tank->setPositionX(main_tank->getPositionX()+1);
		//	CCLOG("right");
		}

		if(ata>-0.75&&ata<-0.25)
		{
			main_tank->setRotation(270);
			main_tank->setPositionX(main_tank->getPositionX()-1);
			//CCLOG("left");
		}

		if(ata>0.75||ata<-0.75)
		{
			main_tank->setRotation(180);
			main_tank->setPositionY(main_tank->getPositionY()-1);
			//CCLOG("down");
		}
	//	setTagPosition(main_tank->getPositionX(), main_tank->getPositionY());
	}
}


void Control::initData()
{
	origin = ccp(150, 150);  //摇杆原点	
	control_bg = CCSprite::create("dpadUp.png");
	control_bg->setPosition(origin);
	control_bg->setScale(2);
	this->addChild(control_bg);
	cen = CCSprite::create("joystickUp.png");
	cen->setPosition(origin);
	this->addChild(cen);
	CCRect r = control_bg->boundingBox();
	r_control = (r.getMaxX()-r.getMinX())/2; //摇杆半径
        //----------------------
	main_tank = CCSprite::create("an1_anim1.png");
	main_tank->setPosition(ccp(50, 50));
	main_tank->setScale(0.5);
	this->addChild(main_tank);

}



bool Control::ccTouchBegan(CCTouch* touch, CCEvent* event)
{
	if (cen->boundingBox().containsPoint(touch->getLocation()))
	{
		isOnControl = true;
		cen->setScale(1.1);
	}
        //----------
	schedule(schedule_selector(Control::control_update));
	return true;
}




void Control::ccTouchEnded(CCTouch* touch, CCEvent* event)
{
	isOnControl = false;
	cen->setPosition(origin);
	cen->setScale(1);

        //---------
	unscheduleAllSelectors();
}





© 著作权归作者所有

共有 人打赏支持
BingzhaoChen
粉丝 1
博文 19
码字总数 2031
作品 0
珠海
私信 提问
SpriteKit手机游戏摇杆JoyStick的使用 -- by iFIERO游戏开发教程

### 工欲善其事,必先利其器 有时候学习如何应用第三方库是非常重要的,因为我们不用再自己重复造轮子,在这里,我们就把原先利用重力感应来操控飞机改为用游戏摇杆joystick来操控,具体的操...

布袋
07/27
0
0
手游开发神器 cocos2d-x editor 教程聚合和代码下载(持续更新中)

一 cocos2d-x editor工具下载和基础教程: 一 手游开发神器 cocos2d-x editor初识 二 手游开发神器 cocos2d-x editor工具下载和安装配置 三 手游开发神器 cocos2d-x editor 之基础工具 inte...

makeapp628
2014/02/11
0
0
【Android游戏开发二十四】360°平滑游戏摇杆(触屏方向导航)

李华明Himi 原创,转载务必在明显处注明: 转载自【黑米GameDev街区】 原文链接: http://www.himigame.com/android-game/384.html , 此章节为正在创作的游戏开发书籍中的一部分,由于写书的缘...

迷途d书童
2012/03/19
0
0
Easy Touch Controls 组件运用

ETC(Easy Touch Controls)控件集中有两种类型的Joystick:Static(静态的):摇杆将会出现在你预先设定好的地方。Dynamic(动态的):摇杆将会出现在你触碰到屏幕的地方。你也可以强制...

牛子威
2017/12/07
0
0
为回馈广大学员,智捷课堂买关老师Cocos2d-x课程送Cocos2d-x图书

为回馈广大学员,智捷课堂买关老师Cocos2d-x课程送Cocos2d-x图书 一、凡购买如下课程送一本图书: 1、 Cocos2d-x入门与提高视频教程Part 2 2、 Cocos2d-x数据持久化与网络通信Part 3 3、 Co...

tony关东升
06/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

android分辨率,屏幕尺寸,屏幕密度关系

名词定义分辨率分辨率就是手机屏幕的像素点数,一般描述成屏幕的“宽×高”,安卓手机屏幕常见的分辨率有480×800、720×1280、1080×1920等。720×1280表示此屏幕在宽度方向有720个像素...

GoldenVein
13分钟前
1
0
inux驱动的异步通知(kill_fasync,fasync)---- 驱动程序向应用程序发送信号

===========================应用程序========================= #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <stdio.h> #include <poll.h> #include <sign......

天王盖地虎626
14分钟前
1
0
使用android studio时,ADB连接不上手机可能性之一

问题描述:as是通过adb连接手机进行调试了,如果电脑装了鲁大师,360等软件,可能会存在adb被这些软件占用的情况,所以会连接不上手机。这种解决方案有很多,比如通过任务管理器查看是谁占用...

白话
16分钟前
1
0
node实践--node集体管理工具PM2入门指南

来自PM2实用入门指南 简介 PM2是node进程管理工具,可以利用它来简化很多node应用管理的繁琐任务,如性能监控、自动重启、负载均衡等,而且使用非常简单。 下面就对PM2进行入门性的介绍,基本...

spinachgit
22分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部