74 lines
2.2 KiB
TypeScript
74 lines
2.2 KiB
TypeScript
import { _decorator, Component, Prefab,Node, instantiate, RigidBody2D, input, Input, EventTouch, UITransform, v3, Collider2D, Contact2DType } from "cc";
|
|
import { Board } from "./Board";
|
|
import { FruitNode } from "./FruitNode";
|
|
const { ccclass, property } = _decorator;
|
|
|
|
@ccclass("GameManager")
|
|
export class GameManager extends Component {
|
|
@property(Node)
|
|
fruitStart: Node = null;
|
|
|
|
@property(Node)
|
|
fruitParent: Node = null;
|
|
|
|
@property(Prefab)
|
|
fruitPrefabs: Prefab[] = [];
|
|
|
|
private _curFruit: Node = null;
|
|
|
|
start() {
|
|
this.createFruit()
|
|
|
|
input.on(Input.EventType.TOUCH_START, this.handelTouchStart, this)
|
|
input.on(Input.EventType.TOUCH_MOVE, this.handelTouchMove, this)
|
|
input.on(Input.EventType.TOUCH_END, this.handelTouchEnd, this)
|
|
}
|
|
|
|
handelTouchStart(event: EventTouch) {
|
|
|
|
}
|
|
|
|
handelTouchMove(event) {
|
|
const curPos = event.getUILocation();
|
|
const parentPos = this.fruitParent.getComponent(UITransform).convertToNodeSpaceAR(v3(curPos.x, curPos.y, 0));
|
|
// 当前水果坐标
|
|
const fruitPos = this._curFruit.getPosition();
|
|
fruitPos.x = parentPos.x
|
|
this._curFruit.setPosition(fruitPos);
|
|
}
|
|
|
|
handelTouchEnd(event) {
|
|
if (!this._curFruit) return;
|
|
|
|
this._curFruit.getComponent(RigidBody2D).enabled = true;
|
|
|
|
this._curFruit = null;
|
|
|
|
this.scheduleOnce(this.createFruit, 2)
|
|
}
|
|
|
|
private createFruit() {
|
|
const fruitId = Math.floor(Math.random() * 3);
|
|
const fruitNode = instantiate(this.fruitPrefabs[fruitId]);
|
|
fruitNode.setPosition(this.fruitStart.position);
|
|
fruitNode.getComponent(RigidBody2D).enabled = false;
|
|
|
|
fruitNode.getComponent(FruitNode).fruitId = fruitId
|
|
// 监听水果碰撞事件
|
|
const collider = fruitNode.getComponent(Collider2D);
|
|
collider.on(Contact2DType.BEGIN_CONTACT, this.handelBeginContact, this)
|
|
|
|
fruitNode.getComponent(RigidBody2D).gravityScale = 3; // 重力
|
|
this.fruitParent.addChild(fruitNode);
|
|
|
|
this._curFruit = fruitNode;
|
|
}
|
|
|
|
handelBeginContact(selfContact: Collider2D, otherContact: Collider2D) {
|
|
if(otherContact.group !== Math.pow(2, 1)) return;
|
|
|
|
console.log(111)
|
|
|
|
}
|
|
}
|