d5286a37acf334298e7452957c0f64a77b716cc6.js 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196
  1. System.register(["__unresolved_0", "cc", "__unresolved_1", "__unresolved_2", "__unresolved_3", "__unresolved_4"], function (_export, _context) {
  2. "use strict";
  3. var _reporterNs, _cclegacy, __checkObsolete__, __checkObsoleteInNamespace__, _decorator, geometry, PhysicsSystem, RigidBody, PoolManager, Game, BulletBase, Enemy, _dec, _class, _crd, ccclass, property, Bullet14;
  4. function _reportPossibleCrUseOfPoolManager(extras) {
  5. _reporterNs.report("PoolManager", "../../core/manager/PoolManager", _context.meta, extras);
  6. }
  7. function _reportPossibleCrUseOfGame(extras) {
  8. _reporterNs.report("Game", "../../game/Game", _context.meta, extras);
  9. }
  10. function _reportPossibleCrUseOfBulletBase(extras) {
  11. _reporterNs.report("BulletBase", "../base/BulletBase", _context.meta, extras);
  12. }
  13. function _reportPossibleCrUseOfGunBase(extras) {
  14. _reporterNs.report("GunBase", "../base/GunBase", _context.meta, extras);
  15. }
  16. function _reportPossibleCrUseOfGun(extras) {
  17. _reporterNs.report("Gun14", "./Gun14", _context.meta, extras);
  18. }
  19. function _reportPossibleCrUseOfEnemy(extras) {
  20. _reporterNs.report("Enemy", "../../game/Enemy", _context.meta, extras);
  21. }
  22. return {
  23. setters: [function (_unresolved_) {
  24. _reporterNs = _unresolved_;
  25. }, function (_cc) {
  26. _cclegacy = _cc.cclegacy;
  27. __checkObsolete__ = _cc.__checkObsolete__;
  28. __checkObsoleteInNamespace__ = _cc.__checkObsoleteInNamespace__;
  29. _decorator = _cc._decorator;
  30. geometry = _cc.geometry;
  31. PhysicsSystem = _cc.PhysicsSystem;
  32. RigidBody = _cc.RigidBody;
  33. }, function (_unresolved_2) {
  34. PoolManager = _unresolved_2.PoolManager;
  35. }, function (_unresolved_3) {
  36. Game = _unresolved_3.Game;
  37. }, function (_unresolved_4) {
  38. BulletBase = _unresolved_4.BulletBase;
  39. }, function (_unresolved_5) {
  40. Enemy = _unresolved_5.Enemy;
  41. }],
  42. execute: function () {
  43. _crd = true;
  44. _cclegacy._RF.push({}, "bfbe82nNGFIZYvxrsfEzbJp", "Bullet14", undefined);
  45. __checkObsolete__(['_decorator', 'Vec3', 'Node', 'geometry', 'PhysicsSystem', 'PhysicsRayResult', 'RigidBody']);
  46. ({
  47. ccclass,
  48. property
  49. } = _decorator); //敌人1006 坦克 所用子弹
  50. _export("Bullet14", Bullet14 = (_dec = ccclass('Bullet14'), _dec(_class = class Bullet14 extends (_crd && BulletBase === void 0 ? (_reportPossibleCrUseOfBulletBase({
  51. error: Error()
  52. }), BulletBase) : BulletBase) {
  53. constructor() {
  54. super(...arguments);
  55. //是否必死 必死的子弹不会回收 要自己控制
  56. this.isRemoveDead = false;
  57. //射击方向的位置
  58. this.vector = null;
  59. }
  60. /**
  61. * 初始化一个子弹
  62. */
  63. /**
  64. * 初始化一个子弹
  65. * @param gun 属于哪把枪
  66. * @param isRemoveDead 是否不受控制的子弹自己管理
  67. */
  68. init(gun, isRemoveDead) {
  69. if (isRemoveDead === void 0) {
  70. isRemoveDead = true;
  71. }
  72. this.gunBase = gun;
  73. this.isDead = false;
  74. this.isRemoveDead = isRemoveDead;
  75. }
  76. /**
  77. * 设置子弹开始位置和射击方向
  78. * @param v 射向的方向
  79. */
  80. setBulletVector(v) {
  81. var bulletSpeed = this.gunBase.data.bulletSpeed;
  82. this.vector = v.clone().multiplyScalar(bulletSpeed);
  83. this.node.forward = v;
  84. this.rayPreCheck(bulletSpeed / 60);
  85. }
  86. /**
  87. * 射击速度发生改变
  88. */
  89. speedChange() {
  90. var bulletSpeed = this.gunBase.data.bulletSpeed;
  91. if (this.vector) {
  92. this.vector = this.vector.normalize().multiplyScalar(bulletSpeed);
  93. }
  94. }
  95. /**
  96. * 实时帧更新
  97. */
  98. update(deltaTime) {
  99. if ((_crd && Game === void 0 ? (_reportPossibleCrUseOfGame({
  100. error: Error()
  101. }), Game) : Game).I.isGameOver || (_crd && Game === void 0 ? (_reportPossibleCrUseOfGame({
  102. error: Error()
  103. }), Game) : Game).I.isPause) {
  104. this.isDead = true;
  105. (_crd && PoolManager === void 0 ? (_reportPossibleCrUseOfPoolManager({
  106. error: Error()
  107. }), PoolManager) : PoolManager).putNode(this.node);
  108. return;
  109. }
  110. if (this.vector) {
  111. var moveDelta = this.vector.clone().multiplyScalar(deltaTime);
  112. this.node.worldPosition = this.node.worldPosition.add(moveDelta);
  113. this.rayPreCheck(moveDelta.length());
  114. }
  115. }
  116. /**
  117. * 检测射击
  118. * @param b
  119. * @param len 检测
  120. */
  121. rayPreCheck(len) {
  122. var p = this.node.worldPosition;
  123. var ray = geometry.Ray.create(p.x, p.y, p.z, this.vector.x, this.vector.y, this.vector.z);
  124. var phy = PhysicsSystem.instance;
  125. var isHit = phy.raycast(ray, 0xffffff, len);
  126. if (isHit && phy.raycastResults.length > 0) {
  127. var result = phy.raycastResults[0];
  128. this.addImpact(result);
  129. if (result.collider.getComponent(RigidBody)) {
  130. result.collider.getComponent(RigidBody).applyForce(this.vector, result.hitPoint);
  131. }
  132. var e = result.collider.node.parent.getComponent(_crd && Enemy === void 0 ? (_reportPossibleCrUseOfEnemy({
  133. error: Error()
  134. }), Enemy) : Enemy);
  135. if (e) {
  136. e.subHP(this.gunBase.data.attack, this.gunBase.data);
  137. } //自动回收了子弹
  138. this.autoRecycle();
  139. }
  140. }
  141. /**
  142. * 加入射击中的效果
  143. * @param e 碰撞到的结果
  144. */
  145. addImpact(e) {
  146. var impact = (_crd && PoolManager === void 0 ? (_reportPossibleCrUseOfPoolManager({
  147. error: Error()
  148. }), PoolManager) : PoolManager).getNode(this.gunBase.impact);
  149. impact.worldPosition = e.hitPoint.add(e.hitNormal.multiplyScalar(0.01));
  150. impact.forward = e.hitNormal.multiplyScalar(-1);
  151. impact.scale = this.node.scale;
  152. impact.setParent(e.collider.node, true);
  153. }
  154. }) || _class));
  155. _cclegacy._RF.pop();
  156. _crd = false;
  157. }
  158. };
  159. });
  160. //# sourceMappingURL=d5286a37acf334298e7452957c0f64a77b716cc6.js.map