AiPlayerController.js 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. var gameConfig = require("../GameConfig.js");
  2. var playerConfig = require("../PlayerConfig.js");
  3. var webView = require("../../WebView");
  4. var lib = require("../../Library.js");
  5. var mgobe = require("../../Mgobe");
  6. cc.Class({
  7. extends: require("BasePlayerController"),
  8. properties: {
  9. mainPlayer: {
  10. default: null,
  11. type: cc.Node,
  12. serializable: true,
  13. },
  14. },
  15. init()//override
  16. {
  17. this._super();
  18. this.areaState = -1;
  19. this.area1 = gameConfig.handrailArea1;
  20. this.area2 = gameConfig.handrailArea2;
  21. },
  22. start()//override
  23. {
  24. this._super();
  25. //监听帧同步
  26. if (lib.openInWebview() && !webView.bAi)
  27. {
  28. mgobe.startFrameSync();
  29. mgobe.room.onRecvFrame = this.onRecvFrame.bind(this);
  30. }
  31. },
  32. onRecvFrame: function (event) {
  33. if (event.data.frame.items && event.data.frame.items.length > 0) {
  34. //console.log("帧广播" + JSON.stringify(event.data.frame.items));
  35. let item0 = event.data.frame.items[0];
  36. console.log("player1", this.gStatesSt.playerId,';player2',item0.playerId);
  37. if(this.gStatesSt.playerId == item0.playerId) return;
  38. console.log("帧广播", event.data.frame);
  39. if(item0.data.cmd == 'jump')
  40. {
  41. this.jump();
  42. }
  43. else if(item0.data.cmd == 'speedUp')
  44. {
  45. this.speedUp();
  46. }
  47. }
  48. },
  49. update(dt) {//override
  50. this._super();
  51. if(!webView.bAi) return;
  52. //super class return is not effect to sub class so we need to write if return every subclass
  53. if(this.pStatesSt.currentProState == this.pStatesSt.pProStates.end) return;
  54. //测试用给Ai随机速度
  55. if (this.pStatesSt.currentSpeed < playerConfig.playerSpeedGrade.fast)
  56. {
  57. this.pStatesSt.currentSpeed += lib.randomFromIntRange(0, 1.2);
  58. // this.pStatesSt.currentSpeed += lib.randomFromIntRange(0, 1);
  59. }
  60. if(this.pStatesSt.handrailArr.length == this.pStatesSt.passedHurdrailNum)return;
  61. this.hurdrailStartPX = this.pStatesSt.handrailArr[this.pStatesSt.passedHurdrailNum].startPX;
  62. // Enter jump area 1 of handrail
  63. if (this.node.x > this.hurdrailStartPX+this.area1.end/2 &&
  64. this.node.x < this.hurdrailStartPX+this.area1.end)
  65. {
  66. if(this.areaState == -1)
  67. {
  68. this.areaState = 0;
  69. this.rate = lib.randomFromIntRange(0,100);
  70. if(this.rate<40)
  71. {
  72. this.jump();
  73. }
  74. }
  75. }
  76. // Enter jump area 2 of handrail
  77. if (this.node.x > this.hurdrailStartPX + this.area2.end/2 &&
  78. this.node.x < this.hurdrailStartPX + this.area2.end)//-(2487-2374))
  79. {
  80. if(this.areaState == 0)
  81. {
  82. this.areaState = 1;
  83. if (this.rate >= 40 && this.rate < 50) {
  84. this.jump();
  85. }
  86. this.schedule(function() {
  87. this.areaState = -1;
  88. }, 1, 0, 0);
  89. }
  90. }
  91. },
  92. setEndSpeed(){//overwrite
  93. this.pStatesSt.intoTheEndSpeed = this.pStatesSt.currentSpeed / (this.gmSt.terminal.x+35-this.pStatesSt.endLineStopPoint);
  94. },
  95. passedHandrail()//overwrite
  96. {
  97. let ContainIndex = -1;
  98. for(let i=0;i<this.gStatesSt.drawedhandrailArr.length;i++)
  99. {
  100. if(this.gStatesSt.drawedhandrailArr[i].index == this.pStatesSt.passedHurdrailNum)
  101. {
  102. ContainIndex = i;
  103. break;
  104. }
  105. }
  106. if(ContainIndex!=-1)
  107. {
  108. let handrail = this.gStatesSt.drawedhandrailArr[ContainIndex].handrail.getChildByName('Kuolan2');
  109. let spine = handrail.getComponent(sp.Skeleton);
  110. spine.setAnimation(0, 'Idl1_3', false);
  111. this.ctorSt.stagger();
  112. }
  113. },
  114. jump() {//overwrite
  115. this.pStatesSt.currentState = this.pStatesSt.playerAnimState.jump;
  116. this.ctorSt.jump('hurdling_1', function ()
  117. {
  118. this.pStatesSt.currentState = this.pStatesSt.playerAnimState.run;
  119. this.pStatesSt.passedHurdrailNum++;
  120. }.bind(this));
  121. }
  122. });