ea8f1ab196b77c935373b0bdae24fb382e2ef9d1.js 7.2 KB

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