Pixi绘制地图和小车

简介: 这篇文章讲解了如何使用Pixi.js来绘制地图并在地图上显示小车,包括地图网格的创建和小车图像的定位与移动。

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

<div ref="pixiContainer" style="width: 100%;height: 100%"></div>

      let width = window.innerWidth
      let height = window.innerHeight
      this.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;
          }
})

相关文章
|
数据可视化 定位技术
three.js实现烟雾缭绕效果
前言 大家好!我是Fly哥,最近接广告的接的有点多, 感谢大家还是一如既往的支持我!respect, 前几天我在朋友圈分享了一个烟雾缭绕的效果。很多小伙伴都表示非常感兴趣,有的同学说用到了噪声, 有的同学说用到了着色器,还有更过分说用到了ps, 胖虎竟然无语凝噎。其实都是就是简单的贴图。配合一点想象力。我们先看下效果: 然后我就发了一条朋友圈,问这个像什么?? 有的说 云层, 有的说云墨,有的说雾霭, 其实都不是, 我想做的是烟雾。好的话不不多说!, 本篇文章阅读大概5分钟。不耽误大家太多时间,主要是介绍思路, 说太多也没啥意义。如果你对three.js 还没有一点了解都没有,
three.js实现烟雾缭绕效果
|
2月前
|
开发者
ThreeJs实现小球自由落体效果
这篇文章详细介绍了如何在Three.js中利用物理引擎Cannon.js实现小球自由落体效果,包括物理世界的创建、物体的添加及同步物理状态到三维场景中的具体实现。
53 3
ThreeJs实现小球自由落体效果
|
前端开发 容器 API
基于 three.js 的 3D 粒子动效实现
作者:个推web前端开发工程师 梁神 一、背景 粒子特效是为模拟现实中的水、火、雾、气等效果由各种三维软件开发的制作模块,原理是将无数的单个粒子组合使其呈现出固定形态,借由控制器、脚本来控制其整体或单个的运动,模拟出现真实的效果。
3312 0
|
2月前
|
前端开发 图形学
Pixi绘制带箭头的线
这篇文章讲解了如何使用Pixi.js来绘制带有箭头的线条,并提供了绘制箭头的具体实现方法和技术细节。
38 4
Pixi绘制带箭头的线
|
2月前
ThreeJs绘制圆柱体
这篇文章介绍了在Three.js中绘制圆柱体的方法,包括创建圆柱体几何体、设置材质以及将其正确放置在三维场景中的技巧。
55 0
ThreeJs绘制圆柱体
|
2月前
easyX实现自由落体小球
本文介绍了使用easyX图形库实现自由落体小球的编程方法,包括匀速下落和加速下落,以及如何处理小球的反弹和边界条件。
44 0
easyX实现自由落体小球
|
2月前
|
定位技术 调度
Pixi绘制各种图形
这篇文章作为Pixi.js入门教程的一部分,详细介绍了如何使用Pixi.js绘制各种基本图形,如矩形、圆角矩形、圆形和椭圆,并提供了具体的实现代码。
45 0
Pixi绘制各种图形
|
4月前
|
存储 JavaScript vr&ar
three.js中的矩阵变换(模型视图投影变换)
three.js中的矩阵变换(模型视图投影变换)
87 1
|
6月前
|
数据可视化 JavaScript 前端开发
使用 ECharts 绘制3D饼图,立体效果华丽渲染!
使用 ECharts 绘制3D饼图,立体效果华丽渲染!
|
7月前
|
移动开发 前端开发 HTML5
使用canvas绘制超炫时钟
使用canvas绘制超炫时钟
35 3
使用canvas绘制超炫时钟