cocos creator绘制网格背景(基于矢量绘图)

embedded/2024/10/20 16:07:15/

在2D游戏开发中,设计2D地图的背景实现通常有以下几种方式:

  1. 静态背景图

    1. 最简单的方式是使用静态背景图,即将整个背景作为一个静态图像加载到游戏中。这种方式适用于简单的游戏或者背景不需要变化的场景。

  2. 平铺背景图

    1. 可以使用平铺背景图的方式,将一个小背景图无限水平或垂直地重复铺设,以填充整个背景。这种方法适用于需要无缝滚动的场景,比如横版射击游戏或无尽跑酷游戏。

  3. 瓦片地图(Tilemaps)

    1. 类似于游戏地图的实现方式,可以使用瓦片地图来创建背景地图。通过将背景拆分成小块瓦片并进行平铺,可以创建复杂的背景效果。

  4. Parallax(视差滚动)效果

    1. 视差滚动效果是一种常见的背景实现方式,通过在不同速度下滚动多层背景图层来营造出深度感和动态效果。这种方式可以增加游戏场景的立体感和视觉吸引力。

  5. 动态背景生成

    1. 有些游戏可能需要动态生成背景,根据游戏逻辑或玩家行为实时生成背景元素。这种方式适用于需要动态变化的场景,比如无尽奔跑游戏或飞行射击游戏。

  6. 基于矢量绘图

    1. 使用矢量绘图来创建游戏地图是另一种常见的方式。通过绘制矢量图形,可以创建可缩放的地图,而不会失真。这种方法通常用于需要高度可定制化的地图。

下面所展示的是基于矢量绘图,在Cocos creator中就是利用Graphics组件来绘制网格和纯色背景。

drawBackground() {//清除绘制this.graphics.clear();//设置填充颜色this.graphics.fillColor = cc.Color.WHITE;//绘制矩形背景this.graphics.fillRect(-cc.winSize.width/2,-cc.winSize.height/2, cc.winSize.width, cc.winSize.height);//设置线段颜色和宽度this.graphics.strokeColor = cc.Color.GRAY;this.graphics.lineWidth = 2;//绘制竖线for(let i = 0 ; i<cc.winSize.width ; i+= this.width){this.graphics.moveTo(-cc.winSize.width/2 + i,-cc.winSize.height);//起点this.graphics.lineTo(-cc.winSize.width/2 + i,cc.winSize.height/2);//终点}  //绘制横线for(let i = 0 ; i<cc.winSize.height ; i+= this.height){this.graphics.moveTo(-cc.winSize.width/2, cc.winSize.height/2 - i);this.graphics.lineTo(cc.winSize.width/2, cc.winSize.height/2 - i);}    this.graphics.stroke();}

注:该示例绘制的尺寸为屏幕尺寸。

上述代码所绘制出的效果如下:

并且可以不用纯色背景,而是使用了平铺图像作为背景,该实现方式只需要把图像的zIndex设为-1,然后尺寸设置为地图尺寸即可。


http://www.ppmy.cn/embedded/88977.html

相关文章

Apache Doris + Iceberg 快速搭建指南|Lakehouse 使用手册(三)

湖仓一体&#xff08;Data Lakehouse&#xff09;融合了数据仓库的高性能、实时性以及数据湖的低成本、灵活性等优势&#xff0c;能够更加便捷地满足各种数据处理分析的需求。Apache Doris 持续加深与数据湖的融合&#xff0c;已演进出一套成熟的湖仓一体解决方案。我们将通过一…

Eclipse 主网向开发者开放

摘要&#xff1a;Eclipse 基金会宣布&#xff0c;Eclipse 主网已经向开发者开放。在接下来几周的时间里&#xff0c;Eclipse 将邀请开发者在主网上部署项目&#xff0c;并参加黑客马拉松活动——“Total Eclipse Challenge”。 Eclipse 是首个基于以太坊的 SVM Layer2 方案&am…

【CN】Argo 持续集成和交付(二)

7.25.通知 概述 Argo CD 通知持续监控 Argo CD 应用程序&#xff0c;并提供一种灵活的方式来通知用户应用程序状态的重要变化。使用灵活的触发器和模板机制&#xff0c;可以配置何时发送通知以及通知内容。Argo CD 通知包含有用的触发器和模板目录。因此&#xff0c;可以直接…

Sentine 源码分析之--NodeSelectorSlot、ClusterBuilderSlot、StatisticSlot

前言&#xff1a; 前面我们对 Sentinel 有了一个比较系统的认知&#xff0c;本篇我们正式开始分析 Sentinel 的源码&#xff0c;我们知道 Sentinel 使用了责任链模式&#xff0c;根据 Sentinel 官方提供的流程图&#xff0c;我们知道 NodeSelectorSlot 是整个链路的入口&#…

Openboxes开发环境配置及本地化、API测试

目录 Openboxes简介 开发环境配置及启动 更新中文多语言配置 API测试 Openboxes简介 Openboxes是一款开源的仓库管理软件&#xff0c;提供了库存管理、采购管理、销售管理等功能&#xff0c;可以帮助用户高效地管理仓库及库存。并提供了丰富的API接口。系统基于java8 和Gr…

Java码农人生使用手册——类和对象

一、类的定义和使用 类是用来对一个实体&#xff08;对象&#xff09;来进行描述的。 注意&#xff1a; 类名采用大驼峰定义 二、类的实例化 定义了一个类&#xff0c;就相当于在计算机中定义了一个新的类型&#xff0c;用类的类型创建对象的过程&#xff0c;称为类的实例化。 …

简单的docker学习 第4章docker容器

第4章 Docker容器 4.1 容器基础 4.1.1 容器启动流程 通过 docker run 命令可以启动运行一个容器。该命令在执行时首先会在本地查找指定的镜像&#xff0c;如果找到了&#xff0c;则直接启动&#xff0c;否则会到镜像中心查找。如果镜像中心存在该镜像&#xff0c;则会下载到…

Django教程(006):完善(教程005),添加靓号管理功能

文章目录 2、基于Django的靓号管理系统2.1 靓号显示2.2 添加靓号2.3 编辑靓号2.4 删除靓号2.5 靓号搜索2.6 分页展示3、完整代码百度网盘下载地址2、基于Django的靓号管理系统 2.1 靓号显示 表结构创建 class PrettyNum(models.Model):"""靓号管理"&quo…