1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- import GameManager from "./GameManager";
- const { ccclass, property } = cc._decorator;
- @ccclass
- export default class InputController extends cc.Component {
- touchNum: number = 0;
- // LIFE-CYCLE CALLBACKS:
- // onLoad () {}
- start() {
- this.openTouch();
- }
- // update (dt) {}
- openTouch() {
- this.node.on(cc.Node.EventType.TOUCH_START, this.onTouchStart, this);
- this.node.on(cc.Node.EventType.TOUCH_MOVE, this.onTouchMove, this);
- this.node.on(cc.Node.EventType.TOUCH_END, this.onTouchEnd, this);
- this.node.on(cc.Node.EventType.TOUCH_CANCEL, this.onTouchEnd, this);
- }
- onTouchStart(e) {
- if (GameManager.Instance.TargetChara != null) {//检测TargetChara是否为空 空就不执行任何动作
- this.touchNum = 1;
- let posx = this.node.convertToNodeSpaceAR(e.getLocation()).x;//获取点击位置的x值
- let posy = GameManager.Instance.TargetChara.y;//获取上方水果的y值
- cc.tween(GameManager.Instance.TargetChara)
- .to(0.1, { position: cc.v3(posx, posy, 0) })
- .start()
- }
- }
- onTouchMove(e) {
- if (GameManager.Instance.TargetChara != null) {
- this.touchNum = 1;
- GameManager.Instance.TargetChara.x = this.node.convertToNodeSpaceAR(e.getLocation()).x; //水果跟随鼠标移动
- }
- }
- onTouchEnd(e) {
- if (GameManager.Instance.TargetChara != null && this.touchNum == 1) { //this.touchNUm 是防止下落位置错误
- this.touchNum = 0;
- GameManager.Instance.CharaNumberRec[GameManager.Instance.TargetChara.getComponent("CharaCollision").CharaNumber]++;
- GameManager.Instance.updateCharaNumber();
- // 给TargetChara重新设置物理参数
- // 碰撞器的半径为Chara高度的一半
- GameManager.Instance.TargetChara.getComponent(cc.PhysicsCircleCollider).radius = GameManager.Instance.TargetChara.height / 2;
- // 保存
- GameManager.Instance.TargetChara.getComponent(cc.PhysicsCircleCollider).apply();
- // 刚体类型改为动态
- GameManager.Instance.TargetChara.getComponent(cc.RigidBody).type = cc.RigidBodyType.Dynamic;
- // 给一个初始的下落线速度
- GameManager.Instance.TargetChara.getComponent(cc.RigidBody).linearVelocity = cc.v2(0, -800)
- // 属性改完后,TargetChara设置为空,防止连续操作
- GameManager.Instance.TargetChara = null;
- this.scheduleOnce(() => {
- GameManager.Instance.randomOneChara();
- }, 0.5)
- }
- }
- }
|