我在不同季节编码一棵树(尽管树干和随机分支的原始代码不是我自己的)。对于冬天,我想让树保持随机,但还要有动画雪花。
但是,每次调用构成树的函数时,随机数(显然)是不同的。是否有一种方法可以保存函数(或其中的random()函数)的输出并仅绘制该输出?
draw()
函数将调用生成树的函数,因此,如果多次调用该树,由于每次都会对其进行随机化,因此它将迅速改变。树函数必须重复自身才能绘制树,因此存在很多随机数。最终,我只想绘制一棵随机树,然后重复绘制同一棵树,以便draw函数可以重复运行而不遮盖该树。这是两行包含我要保存的随机数的代码:
rotate(random(-0.05,0.05));
if (random(1.0) < 0.6) {
答案 0 :(得分:1)
您要在此处使用randomSeed()函数。如果每次在draw()函数的顶部以相同的编号调用它,那么您将获得相同的“随机”树。如果更改数字,您将获得不同的“随机”树。如果您想要一棵新树(也许在单击鼠标时),则可以更改数字。例如:
let rs;
function setup() {
rs = random(0, 1000);
// your code
}
function draw() {
randomSeed(rs);
// your code
}
function mouseClicked {
rs = random(0, 1000);
}
答案 1 :(得分:0)
您可以通过将值存储在变量中来做到这一点。这是一个简化的示例:
var x;
var y;
function setup(){
createCanvas(500, 500);
x = random(width);
y = random(height);
}
function draw(){
background(32);
ellipse(x, y, 25, 25);
}
这只是一个简单的示例,但是您可以通过使用类似Tree
类的东西来存储自己的值,从而获得更出色的效果。但是想法是一样的:只生成一次随机值,将其存储在变量中,然后在绘制时使用该变量。
您还可以将树绘制一次到缓冲区,然后将该缓冲区绘制到屏幕。 createGraphics()
函数将在这种方法中派上用场。