用touch拖动女主打败小三!

本故事讲述了一个女主与小三为了争夺男主而展开的一系列激烈竞争,包括阴谋诡计、情感纠葛和最终的抉择。通过触摸监听事件、角色创建与位置控制等编程技巧,展示了如何在游戏或应用中实现这一剧情。故事强调了珍惜感情的重要性,避免分分合合带来的风险。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先我要说明的是:这是一篇女主与小三争夺男主的故事!该故事场面规模宏大,剧情环环紧扣,堪称苦情剧中的穿越剧,
爱情公寓里的爱森公寓...


-------------------------------------
boy 和 girl 甜蜜的交往了两年,但是,由于boy是一个文理双修的优秀男儿,小三不得不跳出来了!小三设计出种种阴谋
来拆散boy和girl。最后他俩大吵了一架。在冷战期间,小三强势入内,伴随boy左右!女主发现这个情况后,意识到所有一切都是小三搞的鬼,但她又拉不下脸来去和boy道歉。而我们的故事也就是从这里开始的。
主线剧情:拖动girl移动到男主旁的红色框框内。
分线剧情:girl一进入红框,就能立马被boy文理双修的气质所吸引,飞到他..身边。
分线剧情:按照剧情安排,小三必须在女主回来的时候马上离开!

\
-------------------------------------------------------
实现过程:

1、添加触摸监听事件:

 

1. auto listener = EventListenerTouchOneByOne::create();//创建一个触摸监听(单点触摸)
2. listener->onTouchBegan = CC_CALLBACK_2(HelloWorld::onTouchBegan, this);//指定触摸的回调函数
3. listener->onTouchEnded = CC_CALLBACK_2(HelloWorld::onTouchEnded, this);
4. listener->onTouchMoved = CC_CALLBACK_2(HelloWorld::onTouchMoved, this);
5. _eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this);//将listener放入事件委托中

2、创建boy,girl,girl_3

 

 

01. boy = Sprite::create("boy.png");//创建男主
02. boy->setPosition(Point(400,370));
03. this->addChild(boy,1);
04.  
05. girl_1 = Sprite::create("girl_1.png");//创建女主
06. girl_1->setPosition(Point(250,250));
07. this->addChild(girl_1,1);
08.  
09. girl_3 = Sprite::create("girl_3.png");//创建小三
10. girl_3->setPosition(Point(450,370));
11. this->addChild(girl_3,1);

3、接收监听,touchBegan

 

 

1. bool HelloWorld::onTouchBegan(Touch* touch, Event  *event)
2. {
3. return true;//返回true表示接收触摸事件
4. }

4、拖动女主移动

 

 

01. void HelloWorld::onTouchMoved(Touch* touch, Event  *event)
02. {
03. auto beginPos = touch->getLocationInView();//获得触摸位置
04. beginPos = Director::getInstance()->convertToGL(beginPos);//坐标转换
05.  
06. auto girlPos = girl_1->getPosition();//获取女主的位置
07. auto girlSize = girl_1->getContentSize();//获取女主的三围(大小)
08. //针对女主的坐标和三围定制一个凶..框框
09. auto rect = Rect(girlPos.x - girlSize.width/2,girlPos.y - girlSize.height/2,girlSize.width + 10,girlSize.height + 10);
10. if(rect.containsPoint(beginPos))//判断触点是否在女主身上!
11. {
12. auto endPos = touch->getPreviousLocationInView();//获取触摸的前一个位置
13. endPos = Director::sharedDirector()->convertToGL(endPos);//转换坐标
14.  
15. auto offset = Point(beginPos-endPos);//获取offset,2.14是用ccpSub,3.0后直接用 - 号就可以
16. auto nextPos = Point(girlPos + offset);//获取女主的下一步计划,2.14用的是ccpAdd,
17. girl_1->setPosition(nextPos);
18.
19. }

5、判断女主移动的最后位置,如果在红框,则被吸引,同时小三离开。如果不在,则女主回原地,小三不动。

 

 

01. void HelloWorld::onTouchEnded(Touch* touch, Event  *event)
02. {
03. auto lastPos = touch->getLocationInView();
04. lastPos = Director::getInstance()->convertToGL(lastPos);
05.  
06. auto rect = Rect(400,300,100,150);//建立一个选中区域,女主如果拖动到这个框内就可以瞬移进来,反之是小三进来
07.  
08. MoveTo* moveTo_1;//女主的动作
09. MoveTo* moveTo_3;//小三的动作
10. if(rect.containsPoint(lastPos))
11. {
12. moveTo_1 = MoveTo::create(0.1f,Point(450,370));
13. moveTo_3 = MoveTo::create(0.1f,Point(250,250));
14. }
15. else
16. {
17. moveTo_1 = MoveTo::create(0.1f,Point(250,250));
18. moveTo_3 = MoveTo::create(0.1f,Point(450,370));
19. }
20.  
21. girl_1->runAction(moveTo_1);//男主争夺战~~
22. girl_3->runAction(moveTo_3);
23. }
\
--------------------------------------------------------

这个故事告诉我们,情侣之间一定要珍惜彼此的感情,我们并不是在演三国,分分合合终究是有风险的。一个疏忽,小三自然就出现了。

(http://www.it165.net/pro/html/201403/10038.html)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值