import { SpriteActionType } from "../../object/FSprite"; import FHitBox from "./FHitBox"; /** * 打碎一组箱子后打开门 */ const {ccclass, property} = cc._decorator; @ccclass export default class FHitBoxOpenDoor extends FHitBox { @property({ displayName:'需要打碎的其它箱子', type:[cc.Node] }) mOtherBox: Array = []; private isClose = false public hitBox() { this.onEnd(1) this.ff.pauseSprite(true) this.node.removeComponent(cc.PhysicsBoxCollider) this.node.removeComponent(cc.PhysicsBoxCollider) let element = this.ff.mainSprite element.useHammer() element.playAction2(SpriteActionType.chuizi, false, () => { this.ff.pauseSprite(false) element.playAction2(SpriteActionType.stand, true); element.updateSkin() }) this.isClose = true cc.tween(element.node).sequence( cc.delayTime(0.2), cc.callFunc(() => { this.spine.setCompleteListener(() => { this.node.destroy(); }) this.openDoor() this.spine.setAnimation(0, 'boom', false); }) ).start(); } public openDoor(){ for (let i = 0; i < this.mOtherBox.length; i++) { const element = this.mOtherBox[i]; if(element.isValid && !element.getComponent(FHitBoxOpenDoor).isClose){ return } } this.pause() this.moveCamera(this.hide.getPosition(),1,()=>{ this.resume() if (this.hide && this.hide.isValid) { this.hide.active = true; } }) } }