9.pixi.js编写的塔防游戏(类似保卫萝卜)-群炮弹发射逻辑

这篇具有很好参考价值的文章主要介绍了9.pixi.js编写的塔防游戏(类似保卫萝卜)-群炮弹发射逻辑。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

游戏说明

一个用pixi.js编写的h5塔防游戏,可以用electron打包为exe,支持移动端,也可以用webview控件打包为app在移动端使用

环境说明

  cnpm@6.2.0  
  npm@6.14.13  
  node@12.22.7  
  npminstall@3.28.0  
  yarn@1.22.10  
  
  npm config list  
  electron_mirror = "https://npm.taobao.org/mirrors/electron/"  
  home = "https://www.npmjs.org"  
  registry = "https://registry.npmmirror.com/"  

曲线移动

 通过控制炮弹移动的曲线方向 速度 中点位置来控制炮弹的移动位置。

起点和终点:

起点为导弹发射单位的位置

终点为要攻击目标的位置

中点可以通过随机数计算出来:

9.pixi.js编写的塔防游戏(类似保卫萝卜)-群炮弹发射逻辑,PIXI实战教程,游戏流程开发,javascript,游戏,开发语言,typescript,游戏开发,animation

 中点为灰色我们需要计算中点

起点和终点可以构成一条直线

9.pixi.js编写的塔防游戏(类似保卫萝卜)-群炮弹发射逻辑,PIXI实战教程,游戏流程开发,javascript,游戏,开发语言,typescript,游戏开发,animation我们要获取两点的中点可以i通过公式:

  /**
   * 获取两点的中点
   * @param p1 点一
   * @param p2 点二
   * @returns 返回中点
   */
  midPoint(p1:POINT, p2:POINT) {
    const returnPoint = [0, 0]
    returnPoint[0] = (p1.x + p2.x) / 2
    returnPoint[1] = (p1.y + p2.y) / 2
    return returnPoint
  },

获取两点的中点 但是中点还在直线上我们还需要极坐标来位移中点

  /**
   * 极坐标位移
   * @param p1 位移的起始点
   * @param dir 位移的方向 弧度制
   * @param dis 位移的距离
   */
  coorTranslate(p1:POINT, dir:number, dis:number) {
    const returnPoint = [0, 0]
    const sin = Math.sin(dir)
    const cos = Math.cos(dir)
    const y = dis * sin
    const x = dis * cos
    returnPoint[0] = x + p1.x
    returnPoint[1] = y + p1.y
    return returnPoint
  },

 方向我们可以是角度和距离可以是随机的这样我们的曲线就像是做的目标的移动了只需要在固定的时间创建多个炮弹并设置炮弹的速度就可以达到目标。

详细代码:

            // 发射子弹数量
            let bulletNumber = 6
            // 开始点根据绑定单位的坐标获取
            const startPoint = { x: p.x, y: p.y }
            const f = function() {
              Main.setTimeoutGame(function() {
                bulletNumber--
                const count = userUtilsPro.randIntBetween(1, 3)
                for (let i = 0; i < count; i++) {
                  if (bulletNumber >= 0) {
                    const end = { x: p2.x, y: p2.y }
                    // 创建子弹对象
                    const b = Bullet.create(bulletName, startPoint, end, BULLET_MOVE_TYPE.BEZIER) as Bullet
                    // 计算两点间的距离
                    const dis = userUtilsPro.pointsDis(startPoint, end)
                    // 随机方向
                    const fx = userUtilsPro.randIntBetween(0, 1) === 0 ? 1 : -1
                    // 中点计算随机位置
                    // 中点随机角度
                    const c = userUtilsPro.bezierMidPoint(startPoint, end, Math.PI * userUtilsPro.randBetween(0, 2), fx * Math.round(dis) * userUtilsPro.randBetween(0.5, 1.5))
                    b._userCenter = true
                    b.center = {
                      x: c[0],
                      y: c[1]
                    }
                    // 随机速度
                    b.setSpeed(2.6 + 4 * userUtilsPro.randBetween(0.1, 1))
                    // 子弹的创建单位
                    b.use = p.id
                    // 添加子弹到场景
                    Main.getMain().getNowScene().addGameObject(b)
                  }
                }

 先设置发射炮弹数量 然后通过延时计时器来执行有下面的操作:

起点,终点固定。一次发射执行数量随机,方向随机,中点极坐标位置随机,速度随机 就可以达到下面的效果。

这是我们做的目标:

9.pixi.js编写的塔防游戏(类似保卫萝卜)-群炮弹发射逻辑,PIXI实战教程,游戏流程开发,javascript,游戏,开发语言,typescript,游戏开发,animation

 项目开源地址:

GitHub - yinhui1129754/towerDefense: 一个使用pixi.js编写的类似保卫萝卜的塔防游戏。文章来源地址https://www.toymoban.com/news/detail-526566.html

到了这里,关于9.pixi.js编写的塔防游戏(类似保卫萝卜)-群炮弹发射逻辑的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Unity游戏源码分享-塔防游戏保卫兔子的食物CarrotFantasy

    Unity游戏源码分享-塔防游戏保卫兔子的食物CarrotFantasy 经典塔防游戏,可发布PC、Andoid、IOS、Web等 下载地址:https://download.csdn.net/download/Highning0007/88189987  

    2024年02月13日
    浏览(38)
  • Unity学习笔记--siki学院保卫萝卜

      在同一个脚本中的执行先后顺序:先左后右 Inspector 赋值   外部调用 Awake OnEnable Start 脚本对象的失活与激活不作用于Awake方法,当方法中只有Awake方法时,控制脚本激活失活的对勾会消失掉  当物体失活又激活的时候,会调用OnEnable 方法,Awake和Start只会在最开始调用一次,

    2024年02月16日
    浏览(42)
  • 参照DefenseGrid在Unity中实现合理的塔防寻路机制

    在一款TD游戏中,最重要的单位就两大类:防御塔(Tower)和敌人单位(Enemy)。在处理敌人单位的AI行为时,最基本也是最重要的就是自动寻路。在各式TD游戏中,防御塔的攻击方式以及敌人单位的Buff机制往往是能做出差异化的地方;而在寻路问题上,几乎是没有差异的,面

    2024年01月24日
    浏览(35)
  • 使用js原生customElements.define()API 实现类似godot游戏引擎的colorRect类

    一共有两个方案,一个是基于div和css的dom渲染,一个是基于canvas的硬件绘图

    2024年02月08日
    浏览(65)
  • Pixi.js的使用整理

    最近在做的一个前端项目中,有一些图像的处理操作(3D图,2D图都有),其中3D图也是通过获取后端服务的图像2D数据进行绘制展示,通过鼠标各种操作调用后端服务来进行重新获取新图数据。这里前端设计到图像的操作使用了PIXIJS,这里将使用的方式做一个说明,以作参考

    2024年02月13日
    浏览(34)
  • 眨个眼就学会了Pixi.js

    本文正在参加「金石计划」 带尬猴,我是德育处主任 当今的Web开发中,图形和动画已经成为了吸引用户注意力的重要手段之一。而 Pixi.js 作为一款高效、易用的2D渲染引擎,已经成为了许多开发者的首选~~(我吹的)~~。本文将为工友们介绍PixiJS的基础知识和使用方法,希望可以

    2024年02月08日
    浏览(84)
  • Unity实现一个3D塔防游戏

    Unity是一款游戏引擎,可以用来开发各种类型的游戏。在这篇文章中,我们将使用Unity来创建一个3D塔防游戏。本文将从游戏设计开始,一步一步地讲解如何实现一个基本的塔防游戏。 对啦!这里有个游戏开发交流小组里面聚集了一帮热爱学习游戏的零基础小白,也有一些正在

    2023年04月26日
    浏览(51)
  • Unity游戏源码分享-2.5D塔防类游戏

    Unity游戏源码分享-2.5D塔防类游戏         项目地址: https://download.csdn.net/download/Highning0007/88118947

    2024年02月15日
    浏览(45)
  • unity制作一款塔防游戏

    关键技术: 寻路系统 生成怪物算法 粒子系统 line renderer制作追踪射线 相机视角移动、放大 炮弹追踪算法 粒子特效 按钮动画制作 设置几个基准点,用于偏移方向 定义一个Move方法 判断当前行数是否超过位置数组的长度,如果是则直接返回 根据当前位置与目标位置计算出移

    2024年02月08日
    浏览(51)
  • Unity塔防游戏的制作与实现

    一、游戏场景的搭建 首先,我们需要创建一个新的Unity场景,并将场景设置为2D模式。然后,我们需要导入一些必要的素材,如地图、塔、怪物、子弹等。我们可以从Unity Asset Store中下载这些素材,或者自己制作。 对啦!这里有个游戏开发交流小组里面聚集了一帮热爱学习游

    2024年02月14日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包