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;
          }
})

相关文章
|
Python
飞机大战-发射子弹(5)
用Python语言编写飞机大战,主要编写发射子弹。
79 0
Threejs实现下雨,下雪,阴天,晴天,火焰
Threejs实现下雨,下雪,阴天,晴天,火焰
1670 0
Threejs实现下雨,下雪,阴天,晴天,火焰
|
6天前
|
开发者
ThreeJs实现小球自由落体效果
这篇文章详细介绍了如何在Three.js中利用物理引擎Cannon.js实现小球自由落体效果,包括物理世界的创建、物体的添加及同步物理状态到三维场景中的具体实现。
19 3
ThreeJs实现小球自由落体效果
|
7天前
threeJs用精灵模型Sprite实现下雨效果
这篇文章介绍了使用Three.js中的Sprite(精灵)模型来实现下雨特效的方法和技术细节。
18 2
threeJs用精灵模型Sprite实现下雨效果
|
前端开发 容器 API
基于 three.js 的 3D 粒子动效实现
作者:个推web前端开发工程师 梁神 一、背景 粒子特效是为模拟现实中的水、火、雾、气等效果由各种三维软件开发的制作模块,原理是将无数的单个粒子组合使其呈现出固定形态,借由控制器、脚本来控制其整体或单个的运动,模拟出现真实的效果。
3287 0
|
5天前
ThreeJs绘制圆柱体
这篇文章介绍了在Three.js中绘制圆柱体的方法,包括创建圆柱体几何体、设置材质以及将其正确放置在三维场景中的技巧。
12 0
ThreeJs绘制圆柱体
|
6天前
Threejs绘制传送带
这篇文章详细介绍了如何使用Three.js绘制一个动态的传送带模型,包括传送带的几何体创建、纹理应用以及实现带体循环移动的动画效果。
11 0
Threejs绘制传送带
|
2月前
|
API
|
5月前
|
JavaScript 前端开发
Three.js 的骨骼动画 SkinnedMesh
【2月更文挑战第16天】
168 2
|
5月前
如何用SCSS制作小铃铛振动/震动/摇晃/晃动的特效/效果?
如何用SCSS制作小铃铛振动/震动/摇晃/晃动的特效/效果?