50b2193aab99a50b1de1178260f0c92ed167705e 15 KB

123456789101112131415
  1. {
  2. "code": "var Vector3 = Laya.Vector3;\r\nimport { AssetManager } from \"../Tools/AssetManager\";\r\nimport { Transform3DHelper, GameTools } from \"../Tools/GameTools\";\r\nimport { EventManager, StageState } from \"../Tools/EventManager\";\r\nimport GamePool from \"../Tools/GamePool\";\r\nimport { Hostage } from \"./Hostage\";\r\nimport { AccountManager } from \"../Net/AccountManager\";\r\nimport { PlayerControl } from \"./PlayerControl\";\r\nexport var ChaseNpcState;\r\n(function (ChaseNpcState) {\r\n ChaseNpcState[ChaseNpcState[\"Idle\"] = 0] = \"Idle\";\r\n ChaseNpcState[ChaseNpcState[\"Run\"] = 1] = \"Run\";\r\n ChaseNpcState[ChaseNpcState[\"Die\"] = 2] = \"Die\";\r\n ChaseNpcState[ChaseNpcState[\"Atk\"] = 3] = \"Atk\";\r\n})(ChaseNpcState || (ChaseNpcState = {}));\r\n;\r\nexport class ChaseNpc extends Laya.Script {\r\n constructor() {\r\n super();\r\n this.frontdie = false;\r\n this.reardie = false;\r\n this.canmove = false;\r\n this.isdead = false;\r\n this.atked = false;\r\n this.begin = false;\r\n this.m_chasenpcspeed = 0;\r\n this.pursuediatance = 0;\r\n this.atkdistance = 10;\r\n this.Distance = 0;\r\n this.ChaseDistance = 0;\r\n this.NpcStartPos = new Vector3();\r\n this.dir = new Vector3();\r\n this.currotV = new Vector3();\r\n this.currot = new Laya.Quaternion;\r\n this.CurrectRotate = new Laya.Quaternion();\r\n this.curspeed = 0;\r\n this.offest = new Vector3();\r\n this.curpos = new Vector3();\r\n ChaseNpc.ins = this;\r\n EventManager.StageOn(StageState.Start, this, this.Begin);\r\n }\r\n static get Instance() {\r\n if (ChaseNpc.ins) {\r\n return ChaseNpc.ins;\r\n }\r\n else {\r\n return new ChaseNpc();\r\n }\r\n }\r\n onAwake() {\r\n this.m_chasenpcmodel = this.owner;\r\n this.m_chasenpcanimator = this.m_chasenpcmodel.getComponent(Laya.Animator);\r\n this.m_hostage = this.owner.parent.parent.getChildByName(\"player\").getChildAt(0);\r\n this.NpcStartPos = this.m_chasenpcmodel.transform.position.clone();\r\n this.m_chasenpcspeed = AccountManager.Instance.curplayerData.NpcSpeed;\r\n this.Distance = AccountManager.Instance.curplayerData.NpcChaseDistance * 1.65;\r\n this.ChaseDistance = AccountManager.Instance.curplayerData.NpcRushDistance * 1.65;\r\n }\r\n Begin() {\r\n this.ChangeState(ChaseNpcState.Run);\r\n this.begin = true;\r\n }\r\n onUpdate() {\r\n if (!this.begin)\r\n return;\r\n if (this.isdead)\r\n return;\r\n let _host = this.m_hostage.getComponent(Hostage);\r\n if (_host.isdead) {\r\n this.ChangeState(ChaseNpcState.Idle);\r\n return;\r\n }\r\n if (this.frontdie || this.reardie) {\r\n this.ChangeState(ChaseNpcState.Die);\r\n return;\r\n }\r\n var distance = Vector3.distance(PlayerControl.Instance.Player.transform.position, this.m_chasenpcmodel.transform.position);\r\n if (distance < this.Distance && !this.atked) {\r\n Vector3.subtract(this.m_hostage.transform.position, this.m_chasenpcmodel.transform.position, this.currotV);\r\n Vector3.normalize(this.currotV, this.currotV);\r\n this.m_chasenpcmodel.transform.lookAt(new Vector3(this.m_chasenpcmodel.transform.position.x - this.currotV.x, this.m_chasenpcmodel.transform.position.y, this.m_chasenpcmodel.transform.position.z - this.currotV.z), new Vector3(0, 1, 0));\r\n this.NPCMoveDir = this.currotV;\r\n this.canmove = true;\r\n _host.canmove = true;\r\n var _dis = this.m_chasenpcmodel.transform.position.z - this.NpcStartPos.z;\r\n if (_dis >= this.ChaseDistance) {\r\n this.atked = true;\r\n this.ChangeState(ChaseNpcState.Atk);\r\n }\r\n }\r\n this.Move(this.NPCMoveDir, this.m_chasenpcspeed);\r\n this.RayCheck();\r\n }\r\n Move(_dir, _speed) {\r\n if (this.canmove) {\r\n var sp = GameTools.Instance.lerp(this.curspeed, _speed, 0.1);\r\n this.curspeed = sp;\r\n Vector3.scale(_dir, this.curspeed, this.offest);\r\n Vector3.add(this.m_chasenpcmodel.transform.position, this.offest, this.curpos);\r\n Vector3.lerp(this.m_chasenpcmodel.transform.position, this.curpos, 0.15, this.curpos);\r\n this.curpos = new Vector3(this.curpos.x, this.curpos.y, this.curpos.z);\r\n this.m_chasenpcmodel.transform.position = this.curpos;\r\n }\r\n }\r\n ChangeState(_state) {\r\n if (this.m_chasenpcstate == _state)\r\n return;\r\n this.m_chasenpcstate = _state;\r\n switch (this.m_chasenpcstate) {\r\n case ChaseNpcState.Atk:\r\n this.Attack();\r\n break;\r\n case ChaseNpcState.Idle:\r\n this.Idle();\r\n break;\r\n case ChaseNpcState.Run:\r\n this.Run();\r\n break;\r\n case ChaseNpcState.Die:\r\n this.Die();\r\n break;\r\n }\r\n }\r\n Idle() {\r\n this.m_chasenpcanimator.play(\"idle\");\r\n }\r\n Attack() {\r\n this.m_chasenpcanimator.play(\"atk\");\r\n this.canmove = false;\r\n }\r\n Win() {\r\n this.m_chasenpcanimator.play(\"win\");\r\n }\r\n Run() {\r\n this.m_chasenpcanimator.play(\"run\");\r\n }\r\n Die() {\r\n this.isdead = true;\r\n if (this.frontdie) {\r\n this.m_chasenpcanimator.play(\"diefront\");\r\n return;\r\n }\r\n if (this.reardie) {\r\n this.m_chasenpcanimator.play(\"dierear\");\r\n return;\r\n }\r\n this.m_chasenpcanimator.play(\"diefront\");\r\n this.canmove = false;\r\n Laya.timer.once(2000, this, () => {\r\n GamePool.Instance.RecoveryModel(this.m_chasenpcmodel);\r\n });\r\n }\r\n PiaoZi() {\r\n let help = new Laya.Image();\r\n help.skin = \"Game/res/textrue/help.png\";\r\n Laya.stage.addChild(help);\r\n let screenpos = new Vector3();\r\n Laya.timer.frameLoop(1, this, () => {\r\n AssetManager.Instance.maincamera.worldToViewportPoint(this.m_chasenpcmodel.transform.position, screenpos);\r\n help.pos(screenpos.x, screenpos.y);\r\n });\r\n }\r\n RayCheck() {\r\n let startpos = new Vector3(this.m_chasenpcmodel.transform.position.x, this.m_chasenpcmodel.transform.position.y + 1, this.m_chasenpcmodel.transform.position.z);\r\n let dir = Transform3DHelper.getForward(this.m_chasenpcmodel.transform);\r\n let ray = new Laya.Ray(startpos, dir);\r\n let hitres = new Laya.HitResult();\r\n let isHit = AssetManager.Instance.mainscene.physicsSimulation.rayCast(ray, hitres, 1, 200);\r\n if (isHit) {\r\n let target = hitres.collider.owner.parent;\r\n if (target.name == \"hostage\") {\r\n let _hostage = target.getComponent(Hostage);\r\n _hostage.isdead = true;\r\n this.canmove = false;\r\n }\r\n else if (target.name == \"bonfire\") {\r\n this.ChangeState(ChaseNpcState.Die);\r\n }\r\n else if (target.name == \"stone\") {\r\n this.m_chasenpcspeed = 0;\r\n }\r\n else if (target.name == \"\") {\r\n }\r\n }\r\n }\r\n}\r\n//# sourceMappingURL=ChaseNpc.js.map",
  3. "references": [
  4. "E:/LayaProject/ArcherWorrior/src/Tools/AssetManager.ts",
  5. "E:/LayaProject/ArcherWorrior/src/Tools/GameTools.ts",
  6. "E:/LayaProject/ArcherWorrior/src/Tools/EventManager.ts",
  7. "E:/LayaProject/ArcherWorrior/src/Tools/GamePool.ts",
  8. "E:/LayaProject/ArcherWorrior/src/Game/Hostage.ts",
  9. "E:/LayaProject/ArcherWorrior/src/Net/AccountManager.ts",
  10. "E:/LayaProject/ArcherWorrior/src/Game/PlayerControl.ts",
  11. "E:/LayaProject/ArcherWorrior/src/Game/NpcRunner.ts"
  12. ],
  13. "map": "{\"version\":3,\"file\":\"ChaseNpc.js\",\"sourceRoot\":\"\",\"sources\":[\"../../../src/Game/ChaseNpc.ts\"],\"names\":[],\"mappings\":\"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\"}"
  14. }