文档章节

cocos2d-x 摇杆(二)

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

码上生花,ECharts 作品展示赛正式启动!>>>


根据上一篇内容进行改进

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
珠海
私信 提问
加载中
请先登录后再评论。
手游摇杆(二)八方向摇杆和移动范围限制

前面的实现了一版最简单的四方向摇杆,基于此做两个方面的优化: 升级为八方向 限制移动范围 一 八方向 前面做的四方向摇杆,确认方向是基于不等式区域做的,八方向的会有四条直线方程,处理...

丿寒风
03/31
0
0
「雕爷学编程」Arduino动手做(38)——joystick双轴摇杆模块

37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和模块,依照实践出真知(一定要动手做)的理念,以学习和交流...

osc_dmzfpa0c
2019/09/30
3
0
Cocos creator中需要掌握哪些数学物理知识

转载URL:https://www.jianshu.com/p/d76dc3cf5aa7 [关键词]小游戏开发,cocos,数学,相似三角形,单位向量,弧度角度转换,向量转换为夹度,产生不重复的随机序列,切水果游戏,抛物线 ...

googlingman
03/27
0
0
SpriteKit手机游戏摇杆JoyStick的使用 -- by iFIERO游戏开发教程

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

布袋
2018/07/27
0
0
双轴按键摇杆控制器控制TFTLCD(使用ADC1双通道DMA传输)

实验使用如下所示的双轴按键摇杆控制器,来控制TFTLCD上显示的直线。首先介绍一下双轴按键摇杆控制器。原理:十字摇杆为一个双向的10K电阻器,随着摇杆方向不同,抽头的阻值随着变化。本模块...

zgc261
2015/12/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

HashMap解析(主要JDK1.8,附带1.7出现的问题以及区别)

按问题的形式来吧,这些大多是我自己总结的,如有错误请及时指正谢谢 1.你了解HashMap么,可以说说么?   首先,HashMap是一种数据结构,可以快速的帮我们存取数据。它的底层数据结构在1.7...

osc_gzy7qjj6
16分钟前
12
0
CentOS8.1操作系下使用通用二进制包安装MySQL8.0(实践整理自MySQL官方)

  写在前的的话: 在IT技术日新月异的今天,老司机也可能在看似熟悉的道路上翻车,甚至是大型翻车现场!自己一个人开车过去翻个车不可怕,可怕的是带着整个团队甚至是整个公司一起翻车山崖...

osc_494omtst
16分钟前
8
0
关于对健壮性代码的理解

这两天学到了很多知识,对项目的严密性有了极为深刻的理解,简而言之,身为前端开发者要站在用户的角度去写相关代码,而不能仅仅局限于理所当然,也不可以认为数据有便有,没有便没有,身为开...

osc_47pscir3
18分钟前
9
0
【Spring注解驱动开发】组件注册-@ComponentScan-自动扫描组件&指定扫描规则

写在前面 在实际项目中,我们更多的是使用Spring的包扫描功能对项目中的包进行扫描,凡是在指定的包或子包中的类上标注了@Repository、@Service、@Controller、@Component注解的类都会被扫描...

osc_a5w6ccj0
19分钟前
10
0
学习c++ (五) 用duilib 编写界面

还是那句话,不想用MFC,写的界面丑,不想依赖MFC的一些库,在网上闲逛,发现duilib还可以,至于QT,有时间再研究, dulib已经没人更新了,估计也是翻不出什么花样了,但研究一下总算是C++的...

osc_jklrr90y
20分钟前
19
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部