Files
ball/assets/scripts/GameManager.ts
1970-01-01 08:45:37 +08:00

59 lines
1.7 KiB
TypeScript

// assets/scripts/GameManager.ts
import { _decorator, Component, Node, Label, Vec3 } from "cc";
import { BallPhysics } from "./BallPhysics";
// import { CameraRig } from "./CameraRig";
const { ccclass, property } = _decorator;
@ccclass("GameManager")
export class GameManager extends Component {
@property(Node) ball!: Node;
// @property(Node) cameraRig!: Node;
// @property(Label) scoreLabel!: Label;
// @property(Label) windLabel!: Label;
private score = 0;
private ballPhys!: BallPhysics;
// private cam!: CameraRig;
onLoad() {
this.ballPhys = this.ball.getComponent(BallPhysics)!;
this.ballPhys.init();
// this.cam = this.cameraRig.getComponent(CameraRig)!;
// 监听进球
this.node.on("GOAL", this.onGoal, this);
this.newRound();
}
onGoal() {
this.score += 1;
this.updateScore();
this.scheduleOnce(() => {
this.newRound();
}, 1.0);
}
private updateScore() {
// if (this.scoreLabel) this.scoreLabel.string = `${this.score}`;
}
private newRound() {
// 重置球与镜头
this.ballPhys.resetBall();
// this.cam.setModeStatic();
// 随机风
// const dir = new Vec3(Math.random() - 0.5, 0, Math.random() - 0.5);
// const strength = 4 * Math.random(); // 0~4
// this.ballPhys.setWind(dir, strength);
// if (this.windLabel) {
// const a = (Math.atan2(dir.x, dir.z) * 180) / Math.PI; // 粗略角度显示
// this.windLabel.string = `Wind ${strength.toFixed(1)} @ ${a.toFixed(0)}°`;
// }
// 几百毫秒后把镜头切为跟随(等玩家射门后也可在 KickInput 里触发)
// this.scheduleOnce(() => this.cam.setModeFollow(), 0.6);
}
}