cocos判断鼠标点击_鼠标拖拽旋转物品示例(比如陀螺旋转)

贴代码前先吐槽下自己的菜鸡,这个题是昨天出去面试让上机做的题。用cocos creator来做,我因为这个引擎不熟,看到里面竟然原先有项目我直接点进去参考了,事实证明我被误导了,鼓捣了一个多小时没搞出来,我就灰溜溜自己走了(找个理由:做题时间没有限制,但我自己口太渴,当时被误导感觉用着引擎太难)。

现在想想这好像是题比较基础的题,回来理了一下,很快就做出来了。。。。。下面是印象里题目的要求。

1. 根据鼠标拖拽方向旋转陀螺(同方向拖拽多次,旋转速度越快)

2. 当鼠标放开时,陀螺延原本旋转方向做减速运动,直到停止

3. 鼠标只点击一次的情况下,立即停止旋转

这里的核心比较简单(对,没有核心)。设个旋转速度V,鼠标拖拽等等操作都是改变这个V值,然后开个定时器让物体以这个速度旋转就好啦。

设速度的变量为initV,鼠标刚开始点击时获得的坐标为startPos,监听三个鼠标事件(开始,移动,结束),方向由坐标来判断,比如左划是顺时针速度为正值,右滑逆时针速度为负值。因为手头有egret引擎,以egret引擎里为例,贴上代码。

/**

贴上一个做完成品的gif图啦。原谅我没有陀螺的素材,随便找了个球啦。

027e37bf5d5a986f3d7bba2c69df2240.gif

真菜鸡,给程序员丢脸了,匿了匿了。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Cocos Creator模拟砸金蛋3d旋转效果 | 附代码egg.zip // Learn TypeScript: // - [Chinese] https://docs.cocos.com/creator/manual/zh/scripting/typescript.html // - [English] http://www.cocos2d-x.org/docs/creator/manual/en/scripting/typescript.html // Learn Attribute: // - [Chinese] https://docs.cocos.com/creator/manual/zh/scripting/reference/attributes.html // - [English] http://www.cocos2d-x.org/docs/creator/manual/en/scripting/reference/attributes.html // Learn life-cycle callbacks: // - [Chinese] https://docs.cocos.com/creator/manual/zh/scripting/life-cycle-callbacks.html // - [English] http://www.cocos2d-x.org/docs/creator/manual/en/scripting/life-cycle-callbacks.html const {ccclass, property} = cc._decorator; @ccclass export default class Game extends cc.Component { @property Count: number = 5; @property(cc.Prefab) prefab: cc.Prefab = null; @property(cc.Node) nodeParent: cc.Node = null; private mEggs: cc.Node[] = []; // LIFE-CYCLE CALLBACKS: // onLoad () {} start () { } // update (dt) {} onClick(event, data){ switch(data){ case 'add':{ this.addEggs(); break; } case 'move':{ this.moveEggs(); break; } case 'stop':{ this.stopMoveEggs(); break; } } } addEggs(){ if(this.Count <= 0){ return; } this.mEggs = []; const N = 360 / this.Count; for(let i = 0; i < this.Count; i++){ let egg = cc.instantiate(this.prefab); let js = egg.getComponent('Egg'); js.setRadian(i * N * Math.PI / 180); js.updatePos(); egg.parent = this.nodeParent; this.mEggs.push(egg); } } moveEggs(){ for(let i = 0; i < this.mEggs.length; i++){ this.mEggs[i].getComponent('Egg').setMove(true); } } stopMoveEggs(){ for(let i = 0; i < this.mEggs.length; i++){ this.mEggs[i].getComponent('Egg').setMove(false); } } }

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值