Scratch 之 大地图引擎怎么做?

引子

        简单的介绍一下,一些游戏引擎是有一个隐形小地图存在的,这个隐形小地图通常用来侦测碰碰撞和移动。那么,一个大地图引擎的背景肯定是很大的(一般来说大小都超过200),如果我们要做出一个枪战作品,那就迟早会发现一个问题:子弹在屏幕之外时,是无法打中目标的,也就是说,子弹被舞台区限制了。有些创作者可能会觉得,直接给子弹加个透明边框不就行了吗,或者做一个大的造型与真实造型来回切换也不就可以吗?嗯,可以说这些想法都非常好,但是这样做会有大量bug存在,且解读性差,不好修改,对后期创作有深远影响。这个时候有人就想出办法了:只要在舞台区内检测碰撞不就行了吗?于是做出了刚刚说的隐形小地图,但是,新的问题出现了,由于隐形小地图与大地图的大小不一,所以就算能侦测到碰撞也无法在大地图中检测到碰撞发生的位置。

       这个时候,就要用到一个重要的变量:缩小系数。简单介绍一下缩小系数,由于隐形小地图与大地图的大小不一,但是隐形小地图与大地图的大小却成正比例关系,是一个固定的值,这个比值就是缩小系数。

       缩小系数是自定的,一般我们做的时候,隐形小地图的大小会随着大地图的大小的变化而变化,这里出几个公式:

关于大小:大地图大小*缩小系数=小地图大小,小地图大小/缩小系数=大地图大小,小地图大小/大地图大小=缩小系数。

关于坐标:大地图坐标*缩小系数=小地图坐标,小地图坐标/缩小系数=大地图坐标,小地图坐标/大地图坐标=缩小系数。

      有了这几个公式,该怎么实现我们想要的功能也就显而易见了。

      我们需要一下几个角色:一是大地图背景,二是隐形的小地图,三是玩家显示的样子的角色,四是玩家的隐形小碰撞箱。

然后

我们就来创建这几个角色:

玩家样子和地图样子是给玩家看的;而玩家碰撞和地图侦测则是隐形的小地图,负责碰撞

接着

我们来定一个缩小系数,如果你的地图小,缩小系数可以大一些,如果你的地图大,建议缩小系数小一些,只要让碰撞都能在舞台区进行都行.

这里我把缩小系数设为了0.2,具体该怎么设还要看你创作的情况

通常我会在“玩家碰撞”这一角色中完成设置,你也可以在其他角色中设置。

由于缩小系数是一个常量,一般来说都不会去调整,所以我在变量名前加上了“#”,表示常量。tips:变量名通常不影响效果,但会影响代码的解读性。

好的,缩小系数已经设置了,接下来我们来绘画一下我们的场景。

在地图样子角色中绘画

我就这么画了,当然,一个地图还需要一个碰撞箱,也就是隐形小地图。

什么?你不会画隐形小地图?没有关系,我来手把手教你。

把地图复制下来

来到地图侦测角色

把复制过来的地图,粘贴到地图侦测这个角色里面

把它变成空心的

加粗轮廓

好了,我们这样就画完了,当然,这个隐形小地图到底该怎么画还是要看看你的实际情况来决定,总之,不碰撞的地方是空心的,要碰撞的地方是要保留的。

玩家碰撞也是一样,接下来我们就来画一下:

来到玩家样子角色,把造型复制下来

把造型粘贴到玩家碰撞里

画出一个比玩家样子小的矩形,但别小太多

为什么要比玩家样子小且为矩形呢?

答案是:方便创作。

比玩家样子小可以保证碰撞时不会出现问题,而矩形则是因为复杂造型碰撞会卡顿,当然,你也可以画出一个圆形出来。

删除后面的玩家样子

这样,玩家侦测就画好了

你不要问我为什么画这么丑,因为隐形小地图不用给玩家看,如果你的作品有需要,你也可以进行美化一下,要按实际情况来画。

接下来

我们来到地图样子角色中

我这里将大小设为300(大小多大得按你的实际情况决定),但是,可以看到,就算我设置了大小=300,但是大小却是273,这是因为Scratch编辑器有舞台区限制,你可以使用费米扩展,但我习惯用另一种方法。

创建一个空的造型,这个造型什么都不用画,空着就行了。

这个方法就是先换成空造型再设置大小,然后再切会来,这样就可以突破Scratch的大小限制(如图所示)。

好了,我们来到地图侦测角色

来到地图侦测角色

上代码!

然后,地图侦测的代码就到这里结束了,嗯,对,你没有听错。

接着

我们来到玩家侦测角色

来到玩家侦测角色

上代码!

tips:如果你有什么地方不懂或不了解为什么这么做,可以先去本文章第一段文字仔细地再看一下,实在不行可以选择到评论区问。

好的,我们把出生点坐标设置了,接下来我们来移动。

上代码!

tips:为什么要这么制作呢?首先,我把:(“按键d是否按下”-“按键a是否按下”)*移动速度,你肯定不知道这是什么意思,给不懂的人讲一下,Scratch有个特性,布尔值积木放某些返回值积木中,会返回1和0,1就是ture,0就是false,如果我们按下d键,a键没有按下,那么:(1-0)*3,这个结果=3,所以我们的x会+3,若d键没按,a键按下,则:(0-1)*3,这个结果=-3,所以我们的x坐标就会-3,实在不懂也没关系,可以用你熟悉的方法来实现移动。

OK,接下来我们来做做碰撞:

创建名为“碰撞”的普通自制积木

上代码!

当然,这只是碰撞侦测的其中一种方法,你也可以使用你自己的方法。这里用的方法的原理就是:碰到之后回到原来的位置。

上代码!

tips:记得创建图中出现的四个公有变量!

不好意思,我在做教程的时候忘记加上了图中圈起来的代码,你记得加上啊!

不好意思,我在做教程的时候忘记加上了图中圈起来的代码,你记得加上啊!

OK

接下来我们来到玩家样子角色

来到玩家样子角色

上代码!

如何做出摄像头跟随的效果?首先,摄像头肯定是有延迟的,所以玩家x-摄像头x就可得出摄像头延迟了多少,让玩家移到这个位置,就可以制作出摄像头跟随的效果。

好的

我们再来到地图样子角色

来到地图样子角色

上代码!

很好

这样的话应该是不存在bug的,除非你代码拼错了,或者编辑器出了些小问题,不过相信你能经过不断地努力,制作出一个大地图作品。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/79158.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Layui实现OA会议系统之会议管理模块总合

目录 一、项目背景 二、项目概述 1. 概述 2. 环境搭建 3. 工具类引用 4. 功能设计 4.1 会议发布 4.2 我的会议 4.3 会议审批 4.4 会议通知 4.5 待开会议 4.6 历史会议 4.7 所有会议 5. 性能优点 5.1 兼容性好 5.2 可维护性和可扩展性 5.3 轻量灵活 5.4 模块化设计…

图 ML 中的去噪扩散生成模型

Denoising Diffusion Generative Models in Graph ML | by Michael Galkin | Towards Data Science (medium.com) 一、说明 AI DDPM 代表【"Adaptive Importance Density Power Mixture Model" 】即“自适应重要性密度幂混合模型”,是一种用于密度估计的机…

8.物联网操作系统之事件标志组

。事件标志组定义 FreeRTOS事件标志组介绍 FreeRTOS事件标志组工作原理 一。事件标志组定义 信号量信号量只能实现任务与单个事件或任务间的同步。但是某些任务可能会需要与多个事件或任务进行同步,此时就可以使用事件标志组来解决。事件标志组能够实现某个任务与…

LeetCode--HOT100题(23)

目录 题目描述:206. 反转链表(简单)题目接口解题思路代码 PS: 题目描述:206. 反转链表(简单) 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 LeetCode做题链接&…

Python头歌合集(题集附解)

目录 一、Python初识-基本语法 第1关:Hello Python! 第2关:我想看世界 第3关:学好Python 第4关:根据圆的半径计算周长和面积 第5关:货币转换 二、turtle简单绘图 第1关:英寸与厘米转换 第2关&#xff1…

服务器的shell脚本

shell脚本语句可以执行linux的操作语句。 linux相当于网页,shell相当于java。可以解释编写执行逻辑。 shell的开头以:#!bin/sh 定义解析方式,不同的linuxe内核解释方式不同。大多数内核支持sh(bash)方式。 执行sh文件可…

Baumer工业相机堡盟工业相机如何通过BGAPI SDK获取相机当前数据吞吐量(C#)

Baumer工业相机堡盟工业相机如何通过BGAPISDK里函数来获取相机当前数据吞吐量(C#) Baumer工业相机Baumer工业相机的数据吞吐量的技术背景CameraExplorer如何查看相机吞吐量信息在BGAPI SDK里通过函数获取相机接口吞吐量 Baumer工业相机通过BGAPI SDK获取…

落地数字化管理,提升企业市场竞争力

数字化企业管理方案是一种利用数字技术和信息系统来提升企业管理效率和运营效果的策略。 潜在的数字化企业管理方案 1、企业资源规划(ERP)系统:建立一个集成的ERP系统来统一管理企业的各项业务流程,包括采购、销售、库存管理、财…

计算机网络(6) --- https协议

计算机网络(5) --- http协议_哈里沃克的博客-CSDN博客http协议https://blog.csdn.net/m0_63488627/article/details/132089130?spm1001.2014.3001.5501 目录 1.HTTPS的出现 1.HTTPS协议介绍 2.补充概念 1.加密 1.解释 2.原因 3.加密方式 对称加…

IntelliJ IDEA 如何优雅的添加文档注释(附详细图解)

IntelliJ IDEA 如何优雅的添加文档注释(附详细图解) 📌提要✍✍类注释✍✍方法注释 📌提要 在开发过程中,最常用的注释有两种:类注释和方法注释,分别是为类和方法添加作者、日期、版本号、描述等…

GNSS基本原理

大家都知道,GNSS卫星之所以能够对地球上的终端(例如手机、汽车、轮船、飞机等)进行定位,依靠的是三维坐标系。 找至少4颗卫星,分别计算各个卫星与终端之间的距离△L(这个距离也被称为“伪距”)&…

电脑免费修改IP地址详解

在如今高度网络化的时代,因为或这或那的原因,产生了修改电脑IP地址的需求。了解如何修改电脑的IP地址可以帮助我们实现目的。本文将为大家详细讲解电脑修改IP地址的步骤和操作技巧,希望能帮助大家轻松掌握。 IP地址(Internet Prot…

谈谈网络安全

目录 1.概念 2.发展现状 3.主要问题 1.概念 网络安全是指保护计算机网络和其中的数据免受未经授权访问、损坏、窃取或破坏的过程和技术。网络安全涉及预防和检测潜在的威胁和漏洞,并采取措施保护网络的机密性、完整性和可用性。 网络安全的概念包括以下几个方面&am…

Spring Boot集成Mybatis-Plus

Spring Boot集成Mybatis-Plus 1. pom.xml导包 <!--lombok--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><!--mysql驱动--><dependency><groupId>mysql<…

DSV-080-2NCP-N-MM两位两通常闭先导式电磁阀

该插装阀具有正向关断作用&#xff0c;设计用于负荷保持状态。 动作状况 断电时&#xff0c;DSV -080-2NCP-*-M*为止回阀&#xff0c;允许介质从1到2&#xff0c;同时阻止介质从2到1。 通电时&#xff0c;提升阀提升&#xff0c;打开从 2到1的通通道。 手动关闭选择:按下按…

轻量化YOLOv5改进 | 结合repghost结构冲参数化网络,实现轻量化和加速推理,

RepGhost: A Hardware-Efficient Ghost Module via Re-parameterization 论文总结本文改进repghost 核心代码测试参数量和计算量🔥🔥🔥 “引入RepGhostNet以加速CNN网络推理” “网络宽度的自定义调整:无缝嵌入YOLOv5” “通过结构重参数化优化网络性能” “实现高效和…

基于CentOS 7构建LVS-DR集群

DIPVIPRIPClient192.169.41.139 LVS 192.168.41.134192.169.41.10RS1192.168.41.135RS2192.168.41.138 要求&#xff1a; node4为客户端&#xff0c;node2为LVS&#xff0c;node3和node4为RS。 1.配置DNS解析&#xff08;我这里使用本地解析&#xff09; 192.168.41.134 www.y…

【黑马头条之kafka及异步通知文章上下架】

本笔记内容为黑马头条项目的kafka及异步通知文章上下架部分 目录 一、kafka概述 二、kafka安装配置 三、kafka入门 四、kafka高可用设计 1、集群 2、备份机制(Replication&#xff09; 五、kafka生产者详解 1、发送类型 2、参数详解 六、kafka消费者详解 1、消费者…

二叉树的前序遍历、中序遍历、后序遍历、层次遍历的实现

DLR–前序遍历&#xff08;根在前&#xff0c;从左往右&#xff0c;一棵树的根永远在左子树前面&#xff0c;左子树又永远在右子树前面 &#xff09; LDR–中序遍历&#xff08;根在中&#xff0c;从左往右&#xff0c;一棵树的左子树永远在根前面&#xff0c;根永远在右子树前…

防雷接地综合施工解决方案

防雷接地是指通过一定的装置和方法&#xff0c;将建筑物或其他设施与大地电气连接&#xff0c;以防止雷电对其造成危害的技术措施。防雷接地的主要作用有以下几点&#xff1a; 泄放雷电流。当建筑物或设施受到直接雷击或感应雷电流时&#xff0c;防雷接地装置可以将雷电流导入…