当前位置: 首页 > news >正文

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/"  

曲线移动

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

起点和终点:

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

终点为要攻击目标的位置

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

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

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

我们要获取两点的中点可以i通过公式:

  /*** 获取两点的中点* @param p1 点一* @param p2 点二* @returns 返回中点*/midPoint(p1:POINT, p2:POINT) {const returnPoint = [0, 0]returnPoint[0] = (p1.x + p2.x) / 2returnPoint[1] = (p1.y + p2.y) / 2return 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 * sinconst x = dis * cosreturnPoint[0] = x + p1.xreturnPoint[1] = y + p1.yreturn 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 = trueb.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)}}

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

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

这是我们做的目标:

 项目开源地址:

GitHub - yinhui1129754/towerDefense: 一个使用pixi.js编写的类似保卫萝卜的塔防游戏。

相关文章:

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

游戏说明 一个用pixi.js编写的h5塔防游戏&#xff0c;可以用electron打包为exe&#xff0c;支持移动端&#xff0c;也可以用webview控件打包为app在移动端使用 环境说明 cnpm6.2.0 npm6.14.13 node12.22.7 npminstall3.28.0 yarn1.22.10 npm config list electron_mirr…...

分布式链路追踪

文章目录 1、背景2、微服务架构下的问题3、链路追踪4、核心概念5、技术选型对比6、zipkin 1、背景 随着互联网业务快速扩展&#xff0c;软件架构也日益变得复杂&#xff0c;为了适应海量用户高并发请求&#xff0c;系统中越来越多的组件开始走向分布式化&#xff0c;如单体架构…...

计算机网络————网络层

文章目录 网络层设计思路IP地址IP地址分类IP地址与硬件地址 协议ARP和RARPIP划分子网和构造超网划分子网构造超网&#xff08;无分类编址CIDR&#xff09; ICMP 虚拟专用网VPN和网络地址转换NATVPNNAT 网络层设计思路 网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数…...

el-table刷新后保持高亮并改变状态字段

一、需求&#xff1a; 1、点击左侧右边显示具体内容 2、点击右边确认 左侧依旧高亮并且改变启动状态颜色 3、点击刷新、重置、高级搜索等不高亮 右边也不显示具体内容 二、效果图&#xff1a; 三、具体实施 1、定义highlight-current-row 是否高亮行 <el-table ref&quo…...

ARM Ubuntu内核更新记录

1&#xff0c;系统版本说明&#xff1a;ARM 鲲鹏920 cat /etc/lsb-release DISTRIB_IDUbuntu DISTRIB_RELEASE18.04 DISTRIB_CODENAMEbionic DISTRIB_DESCRIPTION"Ubuntu 18.04.5 LTS" 2&#xff0c; 将source.list中的deb-src打开 # 默认注释了源码镜像以提高 apt…...

【sgUploadTray】上传托盘自定义组件,可实时查看上传列表进度

【sgUploadTray】上传托盘自定义组件&#xff0c;可实时查看上传列表进度 特性&#xff1a; 可以全屏可以还原尺寸可以最小化可以回到右下角默认位置支持删除队列数据 sgUploadTray源码 <template><div :class"$options.name" :show"show" :size…...

改进二进制粒子群算法在配电网重构中的应用(Matlab实现)【论文复现】

目录 ​ 0 概述 1 配电网重构的目标函数 2 算例 3 matlab代码实现 0 概述 配电系统中存在大量的分段开关和联络开关&#xff0c;配电网重构正是通过调整分段开关和联络升大的组合状态来变换网络结构,用于优化配电网某些指标&#xff0c;使其达到最优状态。正常运行时,则通…...

【文章系列解读】Nerf

1. Nerf NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis 2020年8月3日 &#xff08;0&#xff09;总结 NeRF工作的过程可以分成两部分&#xff1a;三维重建和渲染。&#xff08;1&#xff09;三维重建部分本质上是一个2D到3D的建模过程&#xff…...

基于springboot,vue网上订餐系统

开发工具&#xff1a;IDEA 服务器&#xff1a;Tomcat9.0&#xff0c; jdk1.8 项目构建&#xff1a;maven 数据库&#xff1a;mysql5.7 前端技术 &#xff1a;VueElementUI 服务端技术&#xff1a;springbootmybatisredis 本系统分用户前台和管理后台两部分&#xff0c;项…...

Nautilus Chain 更换全新测试网,主网即将在不久上线

目前&#xff0c;Nautilus Chain 正在为主网上线前的最后阶段做准备&#xff0c;据悉该链更新了全新的测试网&#xff0c;在此前版本的测试网的基础上进行了全新的技术升级&#xff0c;最新测试网版本与生态发展的技术规划更为贴近。本次测试网升级将会是最后一次测试网版本的迭…...

攻防世界web:Web_php_wrong_nginx_config,python3后门

网上的wp中关于Web_php_wrong_nginx_config的后门代码都是python2的&#xff08;源码来自&#xff1a;Weevely&#xff1a;一个 PHP 混淆后门的代码分析 - Phukers Blog&#xff09; 以下是转换成python3的版本 # encoding: utf-8from random import randint, choice from ha…...

【VUE】解决图片视频加载缓慢/首屏加载白屏的问题

1 问题描述 在 Vue3 项目中&#xff0c;有时候会出现图片视频加载缓慢、首屏加载白屏的问题 2 原因分析 通常是由以下原因导致的&#xff1a; 图片或视频格式不当&#xff1a;如果图片或视频格式选择不当&#xff0c;比如选择了无损压缩格式&#xff0c;可能会导致文件大小过大…...

spring复习:(35)在getBean时,在哪里根据普通bean和工厂bean进行区分处理来返回的?

在AbstractBeanFactory的doGetBean方法&#xff1a; 调用的getObjectForBeanInstance方法部分代码如下&#xff1a; 如果不是工厂bean,则直接将实例返回&#xff0c;否则调用getObjectFromFactoryBean方法获取工厂bean的getObject方法返回的对象 protected Object getObjectF…...

Jenkins全栈体系(二)

Jenkins 第三章 Jenkins Git Maven 自动化部署配置 十、几种构建方式 快照依赖构建/Build whenever a SNAPSHOT dependency is built 当依赖的快照被构建时执行本job 触发远程构建 (例如,使用脚本) 远程调用本job的restapi时执行本job job依赖构建/Build after other proj…...

c++11 标准模板(STL)(std::basic_istream)(九)

定义于头文件 <istream> template< class CharT, class Traits std::char_traits<CharT> > class basic_istream : virtual public std::basic_ios<CharT, Traits> 类模板 basic_istream 提供字符流上的高层输入支持。受支持操作包含带格式的…...

OpenSource - Spring Startup Ananlyzer

文章目录 &#x1f680;Optimization of Spring Startup核心能力&#x1f4c8;Spring应用启动数据采集报告应用启动时长优化 &#x1f4c8;Spring应用启动数据采集报告安装jar包配置项应用启动自定义扩展 &#x1f680;应用启动时长优化支持异步化的Bean类型接入异步Bean优化 开…...

ES6迭代器、Set、Map集合和async异步函数

目录 迭代器 Iterator 的作用 Iterator 的遍历过程 Set Map集合 map和对象区别? async异步函数 迭代器 迭代器&#xff08;Iterator&#xff09;就是这样一种机制。它是一种接口&#xff0c;为各种不同的数据结构提供统一的访问机制。任何数据结构只要部署Iterator接口&…...

mac android studio设置跟mac系统一样的快捷键

mac版的android studio 跟mac系统的快捷键不一样,主要修改了下面几组操作,为了跟mac系统快捷键相同 setting->Keymap 搜索bottom 修改3个快捷键: cmd↓ 设置让鼠标移动到屏幕最后面 shiftcmd↓ 选中从当前位置到屏幕最下面 option↓. 或者 end 滚动到屏幕最下方 // 因为默认…...

Java-通过IP获取真实地址

文章目录 前言功能实现测试 前言 最近写了一个日志系统&#xff0c;需要通过访问的 IP 地址来获取真实的地址&#xff0c;并且存到数据库中&#xff0c;我也是在网上看了一些文章&#xff0c;遂即整理了一下供大家参考。 功能实现 这个是获取正确 IP 地址的方法&#xff0c;可…...

Java代码实现word转PDF

import com.spire.doc.Document; import com.spire.doc.FileFormat; import lombok.extern.slf4j.Slf4j; public class WordConvertPdf { /** * word转pdf * param wordPathName word文件路径及名称 * param pdfPathName pdf生成路径及名称 */ public static void wordToPdf(…...

golang循环变量捕获问题​​

在 Go 语言中&#xff0c;当在循环中启动协程&#xff08;goroutine&#xff09;时&#xff0c;如果在协程闭包中直接引用循环变量&#xff0c;可能会遇到一个常见的陷阱 - ​​循环变量捕获问题​​。让我详细解释一下&#xff1a; 问题背景 看这个代码片段&#xff1a; fo…...

python/java环境配置

环境变量放一起 python&#xff1a; 1.首先下载Python Python下载地址&#xff1a;Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个&#xff0c;然后自定义&#xff0c;全选 可以把前4个选上 3.环境配置 1&#xff09;搜高级系统设置 2…...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件

今天呢&#xff0c;博主的学习进度也是步入了Java Mybatis 框架&#xff0c;目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学&#xff0c;希望能对大家有所帮助&#xff0c;也特别欢迎大家指点不足之处&#xff0c;小生很乐意接受正确的建议&…...

EtherNet/IP转DeviceNet协议网关详解

一&#xff0c;设备主要功能 疆鸿智能JH-DVN-EIP本产品是自主研发的一款EtherNet/IP从站功能的通讯网关。该产品主要功能是连接DeviceNet总线和EtherNet/IP网络&#xff0c;本网关连接到EtherNet/IP总线中做为从站使用&#xff0c;连接到DeviceNet总线中做为从站使用。 在自动…...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。

1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj&#xff0c;再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...

代理篇12|深入理解 Vite中的Proxy接口代理配置

在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...

Ubuntu系统多网卡多相机IP设置方法

目录 1、硬件情况 2、如何设置网卡和相机IP 2.1 万兆网卡连接交换机&#xff0c;交换机再连相机 2.1.1 网卡设置 2.1.2 相机设置 2.3 万兆网卡直连相机 1、硬件情况 2个网卡n个相机 电脑系统信息&#xff0c;系统版本&#xff1a;Ubuntu22.04.5 LTS&#xff1b;内核版本…...

Vue 3 + WebSocket 实战:公司通知实时推送功能详解

&#x1f4e2; Vue 3 WebSocket 实战&#xff1a;公司通知实时推送功能详解 &#x1f4cc; 收藏 点赞 关注&#xff0c;项目中要用到推送功能时就不怕找不到了&#xff01; 实时通知是企业系统中常见的功能&#xff0c;比如&#xff1a;管理员发布通知后&#xff0c;所有用户…...

2025-05-08-deepseek本地化部署

title: 2025-05-08-deepseek 本地化部署 tags: 深度学习 程序开发 2025-05-08-deepseek 本地化部署 参考博客 本地部署 DeepSeek&#xff1a;小白也能轻松搞定&#xff01; 如何给本地部署的 DeepSeek 投喂数据&#xff0c;让他更懂你 [实验目的]&#xff1a;理解系统架构与原…...

C/Python/Go示例 | Socket Programing与RPC

Socket Programming介绍 Computer networking这个领域围绕着两台电脑或者同一台电脑内的不同进程之间的数据传输和信息交流&#xff0c;会涉及到许多有意思的话题&#xff0c;诸如怎么确保对方能收到信息&#xff0c;怎么应对数据丢失、被污染或者顺序混乱&#xff0c;怎么提高…...