所以我试着用p5.js在画布上做一个形状移动。然而,它所做的就是在新分配的位置重新绘制相同的形状,而不删除旧位置中的形状,留下某种轨迹,并且不像我想要的那样完全移动它。你可以在这里看到结果。
下面是我的"Player“类的代码(我想移动的形状):
function Player() {
this.hp = 10;
this.x = 230;
this.y = 240;
this.color = "red";
this.r = 10;
this.spawn = function(){
fill(this.color);
noStroke();
rect(this.x, this.y, this.r*2, this.r*2);
}
}
这是我在p5.js中设置和绘制函数中的代码:
var p1;
function setup() {
createCanvas(500, 500);
background("green");
p1 = new Player();;
}
function draw() {
p1.spawn();
if (keyIsDown(LEFT_ARROW)) {
p1.x--;
}
if (keyIsDown(RIGHT_ARROW)) {
p1.x++;
}
if (keyIsDown(UP_ARROW)) {
p1.y--;
}
if (keyIsDown(DOWN_ARROW)) {
p1.y++;
}
}
任何帮助都将不胜感激。谢谢!
发布于 2017-08-05 09:22:03
您需要使用background()
函数清除旧帧。您通常应该从background()
函数的第一行调用draw()
。下面是一个例子:
function setup() {
createCanvas(200, 200);
}
function draw() {
background(64);
ellipse(mouseX, mouseY, 25, 25);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.5.11/p5.min.js"></script>
尝试将对background()
函数的调用移动到setup()
函数,以了解我的意思。
发布于 2022-01-12 23:01:05
你只要用
if (keyDown(the key you want to use)) {
}
或
if(keyDown("the key you want to use")){
}
https://stackoverflow.com/questions/45520574
复制相似问题