p5.j s向画布添加不受scale()函数影响的元素

问题描述 投票:0回答:1

我正在创建一个p5.js agar.io风格的游戏。在我的绘图功能中,我使用scale函数缩小地图,因为我的agar.io blob对象的半径增加了。

function draw() {
    var newzoom = 64 / blob.r;
    zoom = lerp(zoom, newzoom, 0.1);
    scale(zoom);
    ...
    show_highscores();

 }

在我的draw()函数中,我也使用我的show_highscores()函数绘制标签,我将用它来显示游戏中所有玩家的高分。

function show_highscores() {
    textSize(12);
    text("Leaderboard", blob.pos.x - 150, blob.pos.y - 80);
    fill(0, 102, 153);
 }

问题:由于我在scale()函数中运行的draw(),我的高分标签相对于我的blob(总是在屏幕中间)改变位置和大小。

问题:

有没有办法以不受scale函数影响的方式绘制我的高分标签。是否可以在画布顶部叠加标签,或者为我的高分标签绘制额外的画布。

javascript scale absolute p5.js
1个回答
1
投票

在绘制记分卡之前,您可以使用push()pop()函数在需要时恢复到基本比例。像这样的东西:

function setup(){
  createCanvas(200, 200);
  frameRate(1);
}

function draw(){
  background(50);
  fill('white');
  stroke(255);

  push();
  scale(random(0.2,3));
  rect(30, 20, 50, 50);
  line(0, 0, 100, 200);
  pop();
  
  stroke(0);
  fill(255, 0, 0, 100);
  rect(30, 20, 50, 50);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.7.3/p5.min.js"></script>
© www.soinside.com 2019 - 2024. All rights reserved.