用ts代码实现吃鸡游戏刷毒小demo(cocos creator引擎)

闲来无事,写下来的,用的cocos creator引擎

刷毒逻辑一般为四个步骤:

1,安全区在毒圈内重新刷新,外圆必须全包含内圆

2,倒计时结束,毒圈沿着毒圈圆心点缩小

3,当外圆与内圆相切的时候,相切点不动,毒圈继续缩小,但外圆圆心朝内圆圆心移动

4,当内圆半径等于外圆时,重新刷新下一个安全区,以此内推

实现步骤:

搭建场景:

 用的正方形场景,模拟一个大地图,毒圈用了引擎带的mask组件,反向遮罩,这样就产生了一个中间空白的圆,四周绿布的效果

代码:

 

 

 

 

 完整代码如下:

const { ccclass, property } = cc._decorator;

@ccclass

export default class Test extends cc.Component {

  @property(cc.Node)

  safeNode: cc.Node = null;//安全区节点

  @property(cc.Node)

  poisonNode: cc.Node = null;//毒圈节点

  @property(cc.Label)

  timeLab: cc.Label = null;//倒计时lablel

  // LIFE-CYCLE CALLBACKS:

  private _radio = 640;//安全区的半径

  private _safeNodeCenter = cc.v2(0, 0);//安全区的圆心坐标

  private _moveSpeed = 2;//毒圈每帧移动速度

  private _canMove = false;//是否可以移动毒圈

  private _startCount = false;//是否开始倒计时缩毒

  private _time = 4;//倒计时缩毒的时间

  // onLoad () {}

  start() {

    this.setSafeNode();

  }

  /**

   * 加载下一个安全区

   */

  setSafeNode() {

    this._radio /= 2;//每次半径减少一半

    this._moveSpeed /= 2;//每次毒圈移动速度减少一半

    this.safeNode.width = this._radio * 2;

    this.safeNode.height = this._radio * 2;//安全区宽高等于圆的直径

    let centerPos = this.getSafeNodeCenterPos();

    this._safeNodeCenter.x += centerPos.x;

    this._safeNodeCenter.y += centerPos.y;

    this.safeNode.position = cc.v3(this._safeNodeCenter.x, this._safeNodeCenter.y, 0);

    this._startCount = true;//开始倒计时

    this.timeLab.node.active = true;

  }

  /**

   * 获取下一个安全区的圆心

   * @returns

   */

  getSafeNodeCenterPos(): cc.Vec2 {

    let dis = this.safeNode.width / 2;

    dis *= Math.random();

    let randAngle = Math.random() * 360;

    let x = Math.cos(randAngle) * dis;

    let y = Math.sin(randAngle) * dis;

    return cc.v2(x, y);

  }

  /**

   * 判断两个圆是否重合,或者是相内切

   * @param pOuter 外圆圆心

   * @param rOuter 外圆半径

   * @param pInner 内圆圆心

   * @param rInner 内圆半径

   * @returns

   */

  isIntersect(pOuter, rOuter, pInner, rInner) {

    //判定条件:两圆心的距离 + rInner = rOuter

    var distance = parseFloat('' + Math.sqrt((pOuter.x - pInner.x) * (pOuter.x - pInner.x) + (pOuter.y - pInner.y) * (pOuter.y - pInner.y)))

    if (distance + rInner >= rOuter) {

      return true;

    }

    return false;

  }

  /**

   * 相切后,毒圈圆心朝安全区圆心移动

   */

  movePoisonNode() {

    if (Math.abs(this.poisonNode.x - this._safeNodeCenter.x) + Math.abs(this.poisonNode.y - this._safeNodeCenter.y) <= 4) {

      this.poisonNode.x = this._safeNodeCenter.x;

      this.poisonNode.y = this._safeNodeCenter.y;

      this._canMove = false;

      this.setSafeNode();

    }

    let moveCenter = this.poisonNode.position;

    let speed = Math.sqrt(this._moveSpeed * this._moveSpeed * 2);

    let angle = this.countAngle(this._safeNodeCenter, moveCenter);

    let x = Math.cos(angle) * speed;

    let y = Math.sin(angle) * speed;

    this.poisonNode.x += x;

    this.poisonNode.y += y;

  }

  /**

   * 计算两个点的angle

   * @param p1

   * @param p2

   * @returns

   */

  countAngle(p1, p2) {

    var angle: number = Math.atan2((p2.y - p1.y), (p2.x - p1.x)); //弧度

    var theta: number = angle * (180 / Math.PI); //角度

    return theta;

  }

  update(dt) {

    if (this._startCount) {

      this._time -= dt;

      this.timeLab.string = Math.floor(this._time) + '';

      if (this._time <= 0) {

        this._canMove = true;

        this.timeLab.node.active = false;

        this._startCount = false;

      }

    } else {

      this._time = 4;

    }

    if (!this._canMove) {

      return

    }

    let inCenter = this.isIntersect(this.poisonNode.position, this.poisonNode.width / 2, this._safeNodeCenter, this.safeNode.width / 2);

    this.poisonNode.width -= this._moveSpeed;

    this.poisonNode.height -= this._moveSpeed;

    if (inCenter) {

      //已经相切,要移动

      this.movePoisonNode();

    }

  }

}

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Cocos Creator是一个流行的游戏开发引擎,提供了各种功能和工具,可以帮助开发者快速创建和设计小游戏。当我们提到Cocos Creator游戏代码时,通常是指游戏的源代码文件和资源文件。 Cocos Creator的源代码文件由JavaScript编写,通常包括游戏的逻辑、场景组织和界面展示等方面的代码。开发者可以通过编辑源代码来修改游戏的行为,添加新的功能或调整游戏的操作方式。通过理解源代码,开发者可以深入了解游戏的工作原理和内部机制。 此外,Cocos Creator的源代码还包括资源文件,如图像、声音和动画等。这些资源文件是游戏中使用的各种元素,可以通过编辑软件进行设计和修改。通过修改资源文件,开发者可以改变游戏的外观和音效,增加游戏的吸引力和乐趣。 如果我们拥有Cocos Creator游戏的源代码,我们可以根据自己的需求进行定制和修改,使游戏更符合自己的创意和目标。我们可以通过学习源代码来了解游戏的设计理念和技巧,从而提高自己的游戏开发能力。 总而言之,Cocos Creator游戏代码游戏开发过程中的重要组成部分,通过对源代码的理解和修改,我们可以定制和优化游戏,使其更具个性和品质。 ### 回答2: Cocos Creator 是一款用于开发2D和3D游戏游戏引擎。它是基于 Cocos2d-x 引擎的基础上进行开发的,同时支持 JavaScriptTypeScript 编程语言。使用 Cocos Creator 可以方便地创建各种类型的小游戏Cocos Creator 的小游戏代码是指使用 Cocos Creator 编写的游戏的源代码。这些源代码包含了游戏的各种各样的功能和逻辑,例如游戏场景的创建、角色控制和碰撞检测等。 在 Cocos Creator 的小游戏代码中,你可以看到许多不同的文件。其中最重要的是场景文件,它包含了游戏中的场景布局和对象的放置。另外还有脚本文件,用于编写游戏的逻辑和功能。以及资源文件,包括游戏中使用的图片、音效和动画等。 小游戏代码中的脚本文件是游戏的核心部分,通过编写脚本可以实现游戏中的各种功能。你可以在脚本中定义角色的移动方式、敌人的行为模式、背景音乐的播放等。同时,你还可以使用脚本文件进行碰撞检测、游戏得分的计算和关卡的切换等。 总而言之,Cocos Creator 的小游戏代码提供了游戏的各种功能和逻辑的实现方式。通过学习和理解这些源代码,你可以自由地修改和扩展游戏的功能,以满足自己的需求。同时,你也可以参考源代码中的编程方式和设计思路,来进行自己的游戏开发。 ### 回答3: Cocos Creator是一款用于开发小型游戏游戏引擎和开发工具。它提供了适用于多平台的跨平台开发功能,以及强大的编辑器和场景编辑工具。 Cocos Creator使用JavaScript脚本语言编写游戏逻辑,并使用C++编写引擎核心功能。游戏内容可以在编辑器中创建和编辑,然后通过编译输出为可在多个平台上运行的游戏代码Cocos Creator游戏代码包括引擎核心的C++部分以及游戏逻辑的JavaScript脚本代码引擎核心代码的作用是提供游戏开发所需的基础功能,包括图形渲染、物理碰撞检测、动画控制和资源管理等。 在游戏代码中,开发者可以编写游戏逻辑的JavaScript脚本,包括角色移动、碰撞检测、游戏进度控制等。开发者可以通过编辑器添加场景、角色和其他游戏资源,并使用JavaScript脚本将它们连接起来,实现游戏的逻辑和交互。 通过编写自定义的脚本代码,开发者可以为游戏增加各种功能和特效,比如实现角色的特殊能力、设计游戏关卡的难度、添加音效和动画效果等。 总的来说,Cocos Creator游戏代码包含了游戏引擎的核心和游戏逻辑的脚本代码,开发者可以利用这些代码来创建和定制自己的小型游戏

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值