monsterbullet.ts 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. import { LQCollide } from "../../../lq_collide_system/lq_collide";
  2. import { LQCollideBase } from "../../../lq_collide_system/lq_collide_base";
  3. import { LQCollideInfoList } from "../../../lq_collide_system/lq_collide_config";
  4. import { EffectMgr } from "../nest/effectMgr";
  5. import Player from "../player";
  6. const {ccclass, property, requireComponent} = cc._decorator;
  7. @ccclass
  8. @requireComponent(LQCollideBase)
  9. export default class monsterbullet extends LQCollide {
  10. /*===========================自动绑定组件开始===========================*/
  11. /*===========================自动绑定组件结束===========================*/
  12. /*===========================自动生成按钮事件开始==========================*/
  13. /*===========================自动生成按钮事件结束==========================*/
  14. atk: number = 1;
  15. bulletId: string;
  16. monsterZooid: number;
  17. _uid: string; // 同一敌军的同一批子弹,对玩家造成伤害有cd限制
  18. protected onLoad(): void {
  19. cc.log('[monsterbullet] [onLoad]');
  20. }
  21. public on_enter(collide: LQCollide): void {
  22. cc.log('[monsterbullet] [on_enter]');
  23. if(collide.collide_group_index == LQCollideInfoList.role) {
  24. let player = collide.node.getComponent(Player);
  25. if(player.canAtk(this.getUid())){
  26. player.beAtked(this.getUid());
  27. let worldPos = this.node.convertToWorldSpaceAR(cc.Vec2.ZERO);
  28. EffectMgr.inst.createHarmNum(worldPos, this.atk);
  29. }
  30. }
  31. this.node.destroy();
  32. }
  33. setDirction(dir: cc.Vec2){
  34. let angle = cc.v2(0,1).signAngle(dir) / Math.PI * 180;
  35. this.node.angle = angle;
  36. }
  37. getUid(){
  38. if(!this._uid){
  39. this._uid = this.bulletId + '-' + this.monsterZooid.toString();
  40. }
  41. return this._uid
  42. }
  43. }