|
@@ -1,106 +0,0 @@
|
|
|
-import { BoxCollider, Component, ConeCollider, CylinderCollider, ITriggerEvent, MeshCollider, Node, ParticleSystem, SphereCollider, Vec3, _decorator, director, game, isValid, v3 } from 'cc';
|
|
|
-import { PropComponent } from './PropComponent';
|
|
|
-import { UIJoyStick } from '../UIJoyStick';
|
|
|
-import { GameMgr, GameStatus } from '../Manager/GameMgr';
|
|
|
-const { ccclass, property } = _decorator;
|
|
|
-
|
|
|
-const _dir: Vec3 = new Vec3();
|
|
|
-const _ime: Vec3 = new Vec3();
|
|
|
-
|
|
|
-@ccclass('HolePlayer')
|
|
|
-export class HolePlayer extends Component {
|
|
|
- @property(Node)
|
|
|
- tornad: Node = null!;
|
|
|
-
|
|
|
- @property({ type: [Node] })
|
|
|
- points: Node[] = [];
|
|
|
-
|
|
|
- holeTigger: ConeCollider = null!;
|
|
|
- speed: number = 10;
|
|
|
-
|
|
|
- coefficient: number = 1;
|
|
|
- isMagment: boolean = false;
|
|
|
-
|
|
|
- protected start(): void {
|
|
|
- this.initilizeData();
|
|
|
- this.updateHoleView();
|
|
|
- this.initilizeUI();
|
|
|
- this.addEventListener();
|
|
|
- }
|
|
|
-
|
|
|
- initilizeData(): void {
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- initilizeUI(): void {
|
|
|
- this.holeTigger = this.tornad.getComponent(ConeCollider)!;
|
|
|
- console.log('this.holeTigger', this.holeTigger);
|
|
|
- this.holeTigger.on('onTriggerEnter', this.onTriggerEnter, this);
|
|
|
- this.holeTigger.on('onTriggerStay', this.onTriggerStay, this);
|
|
|
- this.holeTigger.on('onTriggerExit', this.onTriggerExit, this);
|
|
|
- }
|
|
|
-
|
|
|
- addEventListener(): void {
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- protected onDestroy(): void {
|
|
|
- }
|
|
|
-
|
|
|
- onTriggerEnter(event: ITriggerEvent): void {
|
|
|
- const selfCollider = event.selfCollider as SphereCollider;
|
|
|
- const otherCollider = event.otherCollider as CylinderCollider;
|
|
|
- const radius = otherCollider.radius;
|
|
|
-
|
|
|
- console.log(event.otherCollider.node.name);
|
|
|
- if (event.otherCollider.getGroup() == 1 << 2) {
|
|
|
- const food = event.otherCollider.node.getComponent(PropComponent);
|
|
|
- event.otherCollider.node.setParent(this.points[Math.floor(Math.random() * this.points.length)]);
|
|
|
- event.otherCollider.node.setPosition(Vec3.ZERO);
|
|
|
-
|
|
|
- food.swallow();
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- onTriggerStay(event: ITriggerEvent): void {
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- onTriggerExit(event: ITriggerEvent): void {
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- getPlanceVec3(event: ITriggerEvent): Vec3 {
|
|
|
- const otherPos = event.otherCollider.worldBounds.center;
|
|
|
- const otherPlanceToY = new Vec3(otherPos.x, 0, otherPos.z);
|
|
|
- const distance = otherPlanceToY.clone().subtract3f(this.node.position.x, 0, this.node.position.z);
|
|
|
- return distance;
|
|
|
- }
|
|
|
-
|
|
|
- update(deltaTime: number) {
|
|
|
- if (GameMgr.inst.gameStatus != GameStatus.Playing) return;
|
|
|
- this.MoveHandler();
|
|
|
- //自身旋转
|
|
|
- this.RotateHandler();
|
|
|
- }
|
|
|
-
|
|
|
- RotateHandler(): void {
|
|
|
- const rotateSpeed = 500;
|
|
|
- this.node.eulerAngles = new Vec3(this.node.eulerAngles.x, this.node.eulerAngles.y + rotateSpeed * game.deltaTime, this.node.eulerAngles.z);
|
|
|
- // console.log('this.node.eulerAngles:', this.node.eulerAngles);
|
|
|
- }
|
|
|
-
|
|
|
- MoveHandler(): void {
|
|
|
- const playerDir = UIJoyStick.ins.dir;
|
|
|
- const playerX = playerDir.x * this.speed * game.deltaTime;
|
|
|
- const playerZ = playerDir.y * this.speed * game.deltaTime;
|
|
|
-
|
|
|
- this.node.setPosition(this.node.position.x + playerX, 0, this.node.position.z - playerZ);
|
|
|
- }
|
|
|
-
|
|
|
- updateHoleView(): void {
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-
|