GameStates.js 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. const constants = require('Constants');
  2. var State = cc.Enum({
  3. Menu: -1,
  4. Run: -1,
  5. Over: -1
  6. });
  7. var SpawnCollisionState = cc.Enum({
  8. Normal: 0,
  9. TopAndDestory: 1,
  10. });
  11. var PlayerState = cc.Enum({
  12. Stop: -1,
  13. Run: -1,
  14. over: -1,
  15. });
  16. var PlayerRunState =cc.Enum({
  17. NormalRun: -1,
  18. HoldJavelinRun:-1,
  19. RideElephantRun: -1,
  20. over: -1,
  21. });
  22. //加速带区域名字
  23. var EnterZoneName = cc.Enum({
  24. null: -1,
  25. LongAccelerationZone: -1,
  26. GroundZone: -1,//空白碰撞区域
  27. });
  28. var GameManager = cc.Class({
  29. extends: cc.Component,
  30. properties: {
  31. PlayerCollisions: {
  32. default: [],
  33. type: [cc.Node],
  34. // displayName:"Player(collision)",
  35. // tooltip:"Array for player collision .",
  36. },
  37. index: 0,
  38. PlayerCollisionName: [cc.String],
  39. GameSpeed: 0,//游戏基础速度
  40. isEnterGameFinishZone: false,
  41. //长加速带区域
  42. playerCurrentZone: {
  43. default: EnterZoneName.null,
  44. type: cc.Enum(EnterZoneName)
  45. },
  46. //是否一直加速
  47. isItAlwaysTouch: false,
  48. //进入长加速度,是否点击过。
  49. isMustTouch: false,
  50. //跳远叠加的距离
  51. longJumpCount: 0,
  52. //跳远的距离
  53. // longJumpDistance:0,
  54. //标枪的叠加距离
  55. javeCount: 0,
  56. //标枪的距离
  57. // javelinDistance:0,
  58. //当前进入的项目
  59. currentSpawnSport: -1,
  60. //最后得分
  61. GameScore: {
  62. default: 0,
  63. displayName: "Score (player)",
  64. tooltip: "The score of player",
  65. },
  66. //可以点击
  67. isCanTouch:true,
  68. //重新开始游戏时候,给一段时间无敌,不会再次结束游戏
  69. invincibleTime:2,//s
  70. isInvincible:false,
  71. },
  72. statics: {
  73. State,
  74. SpawnCollisionState,
  75. PlayerState,
  76. EnterZoneName,
  77. PlayerRunState
  78. },
  79. onLoad() {
  80. //开启碰撞体
  81. var CollisioManager = cc.director.getCollisionManager();
  82. CollisioManager.enabled = true;
  83. // CollisioManager.enabledDebugDraw = true;
  84. // 启用物理引擎相关功能
  85. // cc.director.getPhysicsManager().enabled = true;
  86. // cc.director.getPhysicsManager().gravity = cc.v2(0, -160);
  87. GlobalData.GameManager = GameManager;
  88. GlobalData.game = this;
  89. //-- 游戏状态
  90. this.state = State.Run;
  91. //-- 人物的状态
  92. //开始时停止的
  93. this.PlayerState = PlayerState.Run;
  94. //人物跑步状态
  95. this.PlayerRunState = PlayerRunState.NormalRun;
  96. //设置游戏前进的速度
  97. this.GameSpeed = constants.configGameSpeedMin;
  98. //获取heroControl
  99. this.HeroControlScript = cc.find('Canvas/HeroControl').getComponent('HeroControl');
  100. //获取UiState.js
  101. this.GameUIState = this.node.getComponent('GameUIState');
  102. },
  103. //添加碰撞数组
  104. addPlayerCollisionName(other) {
  105. this.PlayerCollisionName.push(other.node.name);
  106. console.log('addPlayerCollisionName:', this.PlayerCollisionName)
  107. },
  108. //清空碰撞数组
  109. clearPlayerCollisionName() {
  110. this.PlayerCollisionName = [];
  111. // this.GameStates.PlayerCollisionName.pop(other.node.name);
  112. console.log('clearPlayerCollisionName:', this.PlayerCollisionName)
  113. },
  114. //获取HeroControl
  115. getHeroControl() {
  116. if (this.HeroControlScript) {
  117. return this.HeroControlScript;
  118. } else {
  119. console.warn('获取HeroControl为空!');
  120. return null;
  121. }
  122. },
  123. //获取GameUIState
  124. getGameUIState() {
  125. if (this.GameUIState) {
  126. return this.GameUIState;
  127. } else {
  128. console.warn('获取GameUIState为空!');
  129. return null;
  130. }
  131. }
  132. });