【发布时间】:2021-10-10 23:37:30
【问题描述】:
我正在制作一个 p5 草图,其中包含在屏幕上随机移动的小蛇。
不幸的是,每次急转弯时,尾巴都会追上头部。
这是我用来计算移动的函数,我尝试了几种不同的方法来计算速度,固定数字,相对于蛇的长度。
它应该通过以半随机方向移动蛇头(点 [3])然后让每个身体点以相同的量向其前一个移动。这不起作用,我觉得我的算法本身有问题。我不熟悉这些中间随机游走,所以我大部分时间都是靠猜测。
this["moveCurve"] = function() {
let newDir = this["oldDir"] + (random() - 1/2)*PI/6;
let velocity = createVector(1,0);
velocity.setMag(5);
velocity.setHeading(newDir);
this["points"][3].add(velocity);
for (let i = 2; i >= 0; i--) {
this["points"][i].add(p5.Vector.sub(this["points"][i + 1],this["points"][i]).setMag(5));
}
this["oldDir"] = newDir;
}
如果您知道我可以做些什么来使这项工作正常进行,我很想听听您的建议。谢谢!
【问题讨论】:
-
我只是想为了鼓舞人心而分享这个:openprocessing.org/sketch/1182306(警告:在没有启用硬件加速的情况下表现不佳)。
标签: javascript simulation p5.js random-walk