Pixi绘制地图和小车

2024-06-04 11:52
文章标签 小车 绘制地图 pixi

本文主要是介绍Pixi绘制地图和小车,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

        之前已经用Pixi绘制出了各种图形以及通过图片绘制精灵,这节用pixi绘制网格地图,并通过图片制作一个Sprite,让这个Sprite在网格地图上运动。首先需要在页面中添加一个div用来后期展示canvas的画布,并将此div实例化为PIXI的Application,作为接下来使用的stage,

<div ref="pixiContainer" style="width: 100%;height: 100%"></div>let width = window.innerWidthlet height = window.innerHeightthis.app = new PIXI.Application({width: width, height: height,backgroundColor: '#FFFFFF'});this.$refs.pixiContainer.appendChild(this.app.view)

        然后给地图中添加点位,这里用for循环添加,绘制一个20*10的一共200个点位,为了让点位不单调,这里用两种颜色,底色为黑色,大小为6,上面再放一个大小为3的蓝色圆。

for (let i = 0; i < 20; i++) {for (let j = 0; j < 10; j++) {this.drawPoint(100+i*50,100+j*50,6)}}
drawPoint(x,y,size){const graphicsOut = new PIXI.Graphics();// 创建一个Graphics对象用于绘制图形graphicsOut.beginFill('#000000'); // 设置填充颜色为黑色graphicsOut.drawCircle(x, y, size); // // 绘制一个半径为2的圆形,作为点graphicsOut.endFill();// 结束填充this.app.stage.addChild(graphicsOut); // 将图形添加到舞台const graphics = new PIXI.Graphics();// 创建一个Graphics对象用于绘制图形graphics.beginFill('#0000FF'); // 设置填充颜色为蓝色graphics.drawCircle(x, y, size/2); // 绘制一个半径为2的圆形,作为点graphics.endFill();// 结束填充this.app.stage.addChild(graphics);// 将图形添加到舞台},

 

有了点位之后开始放车了,这里的车使用一个黑色车形状的图片代替,绘制好后要将车的中心点设置为车的中心点,否则今后旋转的时候会围绕着左上角旋转而不是自身的中心,

      PIXI.Assets.load('/static/images/transfer_vehicle.png').then((texture) =>{let sprite = new PIXI.Sprite(texture);sprite.scale.set(0.02,0.02,0.02)sprite.x=x;sprite.y=y;sprite.anchor.set(0.5)this.app.stage.addChild(sprite);

        但是此时车是静止不动的,因为没有加循环移动的方法,PIXI添加移动方法是用this.app.ticker就类似于ThreeJs中的requestAnimationFrame,是通过不断重新渲染场景,在每次渲染的时候改变场景中对象的属性,就可以实现看起来在移动的效果。这里添加的动画是车从原始点位移动到y轴为500的位置,移动到点位后停止。

this.app.ticker.add(() =>{if(sprite.y<500){sprite.y += 1;}
})

这篇关于Pixi绘制地图和小车的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1030012

相关文章

基于UE5和ROS2的激光雷达+深度RGBD相机小车的仿真指南(五):Blender锥桶建模

前言 本系列教程旨在使用UE5配置一个具备激光雷达+深度摄像机的仿真小车,并使用通过跨平台的方式进行ROS2和UE5仿真的通讯,达到小车自主导航的目的。本教程默认有ROS2导航及其gazebo仿真相关方面基础,Nav2相关的学习教程可以参考本人的其他博客Nav2代价地图实现和原理–Nav2源码解读之CostMap2D(上)-CSDN博客往期教程: 第一期:基于UE5和ROS2的激光雷达+深度RG

基于微信小程序与嵌入式系统的智能小车开发(详细流程)

一、项目概述 本项目旨在开发一款智能小车,结合微信小程序与嵌入式系统,提供实时图像处理与控制功能。用户可以通过微信小程序远程操控小车,并实时接收摄像头采集的图像。该项目解决了传统遥控小车在图像反馈和控制延迟方面的问题,提升了小车的智能化水平,适用于教育、科研和娱乐等多个领域。 二、系统架构 1. 系统架构设计 本项目的系统架构主要分为以下几个部分: 微信小程序:负责用户界面、控制指令的

基于51单片机的智能小车转向控制系统设计与实现

文章目录 前言资料获取设计介绍功能介绍具体实现截图参考文献设计获取 前言 💗博主介绍:✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师,一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对象是咱们电子相关专业的大学生,希望您们都共创辉煌!✌💗 👇🏻 精彩专栏 推荐订阅👇🏻 单片机设计精品

C语言《智能自平衡小车,实现平衡功能的基础上,加入了超声波避障、超声波跟随、蓝牙遥控等功能》+源代码+文档说明

文章目录 源代码下载地址项目介绍项目功能 项目备注源代码下载地址 源代码下载地址 点击这里下载源码 项目介绍 C语言《智能自平衡小车,实现平衡功能的基础上,加入了超声波避障、超声波跟随、蓝牙遥控等功能》+源代码+文档说明 项目功能 为了实现小车功能,小车硬件主要包括: 控制核心板带编码器的直流电机车架12V 1900mah锂电池 项目备注 1、该资源内项目代码都经过

电赛2024年H题智能小车基于MSPM0G3507主控MCU(利用8路灰度加上MPU6050的解决方式)具体项目报告

题目:自动行驶小车(H题) 摘要 本项目由微处理器MSPM0G3507,编码器电机驱动,8路灰度传感器指示线巡线单元,MPU6050六轴传感器无线直行单元,OLED显示人机互动单元,红色LED及蜂鸣器声光提示单元构成。系统运行由两部分组成:自动行驶小车的无指示线直行控制部分和有指示线弯道行驶的实时转向控制部分,小车的无指示线直行控制部分,由MPU6050六轴传感器获得小车姿态的偏航角,通过获得

电赛2024年H题智能小车基于MSPM0G3507主控MCU(利用8路灰度加上MPU6050的解决方式)

一.前言         前段时间,激烈的电赛刚刚结束,很荣幸啊,也是十分的不甘心,本次的湖北赛区H题只拿到了一个省二,看最终的排名,在H题中我们离省一也就差几名。但是整个比赛已经过去了,现在不甘与不舍,也没有任何意义了,只有接收这一现实了。         当时我们整个比赛要求一二三都完美完成,要求四能够十分稳定的跑下来但是跑完四圈得花1分30秒,大概是跑十次才死一两次的样子(毕竟比赛,谁也

微信小程序App实现小车方向控制

目录 概述 1 系统框架结构 1.1 结构介绍  1.2 硬件模块介绍 1.2.1 蓝牙模块介绍 1.2 .2 模块功能介绍 2 功能实现 2.1 微信小程序APP 2.2 下位机功能 3 功能测试 3.1 小程序UI测试 3.2 小车方向控制 微信小程序和蓝牙模块控制小车运行状态 概述 本文主要介绍使用微信小程序和蓝牙模块设计一个智能小程控制系统,笔者介

Underactuated Robotics - 欠驱动机器人学(三)- 体操机器人、小车摆杆和四旋翼飞行器

系列文章目录 前言 在低维模型系统的背景下,已经开展了大量有关欠驱动系统控制的工作。这些模型系统捕捉到了问题的本质,却没有引入更真实世界的例子中经常涉及的所有复杂性。在本章中,我们将重点讨论两个最著名、研究最深入的模型系统--Acrobot 和 Cart-Pole。在我们开发了一些工具后,我们将看到这些工具可以直接应用于其他模型系统;我们将使用四旋翼机器人举出一些例子。所有这些系统都是

基于STM32的红外循迹小车设计与实现

红外循迹小车是一种通过检测反射红外光来自动导航的智能小车。它广泛应用于教育、竞赛和研究领域。本文将详细介绍基于STM32微控制器的红外循迹小车的设计和实现过程。 引言 红外循迹技术利用红外发射器发射红外光,并通过红外接收器检测反射回来的红外光的强度变化来识别路径。STM32微控制器因其强大的处理能力和丰富的外设接口,非常适合用于红外循迹小车的控制。 系统设计 硬件组成 STM32微控制器

控制小车在仿真环境中移动

urdf——Gazebo——ros_control——MoveIt 1、gazebo_ros程序包路径                     /opt/ros/kinetic/share/gazebo_ros                            worlds路径                    /usr/share/gazebo-7/worlds