Cocos 随写

   	auto listenter = EventListenerTouchOneByOne::create();//设置单点触摸
	listenter->onTouchBegan = [](Touch* pTouch, Event* event)->bool
	{
		Point pos1 = pTouch->getLocation();// 3D 坐标
		Point Pos2 = pTouch->getLocationInView();//2D 坐标
		Point pos3 = Director::getInstance()->convertToGL(Pos2);//cocos 坐标

		CCLOG("TouchBegin pos1.x = %lf, pos1.y = %lf",pos1.x, pos1.y);
		CCLOG("TouchBegin pos2.x = %lf, pos2.y = %lf",Pos2.x, Pos2.y);
		CCLOG("TouchBegin pos3.x = %lf, pos3.y = %lf",pos3.x, pos3.y);

		return true;
	};
    
	listenter->onTouchMoved = [](Touch* , Event* e)
	{
		CCLOG("OnTuchMoved");
	};

	listenter->onTouchEnded = [](Touch*, Event* e)
	{
		CCLOG("OnTouchEnded");
	};

	_eventDispatcher->addEventListenerWithSceneGraphPriority(listenter, this);

2
	Size VisibleSize = Director::getInstance()->getVisibleSize();

	Sprite* p1 = Sprite::create("Images/grossinis_sister1.png");
	p1->setPosition(Point(VisibleSize.width * 0.5f-5, VisibleSize.height * 0.5f));
	this->addChild(p1,1);

	Sprite* p2 = Sprite::create("Images/grossinis_sister2.png");
	p2->setPosition(Point(VisibleSize.width * 0.5f+5, VisibleSize.height * 0.5f));
	this->addChild(p2,0);

	auto Listenter = EventListenerTouchOneByOne::create();
	Listenter->setSwallowTouches(true);//设置吞没事件

	Listenter->onTouchBegan = [](Touch* pTouch, Event* pEvent)
	{
		auto target = static_cast<Sprite*>(pEvent->getCurrentTarget());
		Point Pos = Director::getInstance()->convertToGL(pTouch->getLocationInView());

		if(target->getBoundingBox().containsPoint(Pos))//判断是否在精灵中
		{
			target->setOpacity(100);//设置透明度100
			return true;
		}
		return false;
	};

	Listenter->onTouchEnded = [](Touch* pTouch, Event* pEvent)
	{
		auto Target =(Sprite*) pEvent->getCurrentTarget();
		Target->setOpacity(255);

	};

	_eventDispatcher->addEventListenerWithSceneGraphPriority(Listenter, p1);
	_eventDispatcher->addEventListenerWithSceneGraphPriority(Listenter->clone(), p2);

Cocos 四叉树是一种用于游戏开发中的空间分割数据结构,它可以用于快速检测对象之间的碰撞或者寻找特定区域内的对象。下面是一个简单的实现方法: 首先,我们需要定义一个QuadTree类,该类将代表整个四叉树的数据结构。在其中,我们需要定义树的根节点,树的分割阈值(即每个节点允许的最大对象数量)以及树的边界范围。 接下来,我们需要定义一个QuadNode类,该类代表四叉树中的节点。该节点应包含一个边界范围以及其子节点。如果该节点是叶子节点(即没有子节点),则还应保存该节点范围内的所有对象。 在QuadTree类中,我们需要实现一些基本方法。首先是插入对象的方法。该方法首先检查当前节点是否是叶子节点,如果是,则将对象添加到该节点范围内;如果不是,则根据对象的位置将其插入到当前节点的一个子节点中。如果插入对象后,当前节点的对象数量超过分割阈值,则需要继续分割该节点,并将该节点范围内的对象重新分配到子节点中。 另外,我们还需要实现一个查询给定范围内对象的方法。该方法首先检查查询范围是否与当前节点范围相交,如果不相交,则结束查询;如果相交,则检查当前节点是否是叶子节点,如果是,则返回该节点范围内的所有对象;如果不是,则递归调用该方法来查询子节点。 此外,我们还可以实现一些其他方法,如删除对象、更新对象位置等等,以增强四叉树的功能。 综上所述,我们可以根据上述方式编写一个简单的Cocos四叉树类。当然,这只是一个基本的实现方法,根据实际需求和算法优化,我们还可以对其进行改进。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值