javascript - 在 p5.js 中在屏幕上移动一个球
问题描述
我想使用 if 语句在屏幕上移动椭圆,我只让它左右移动,但我无法将它向上移动,所以它完成了一个完整的循环,这是我的代码:
var x;
var y;
var r=33;
var speed=4;
function setup() {
createCanvas(660, 500);
x=width;
y=0;
}
function draw() {
background("black");
ellipse(x,y,r)
if(x<=width&&x>=0)
{
if(y<=0)
x-=12;
else if(y>=height)
x+=21;
}
if(y>=0&&y<=height)
{
if(x>=width)
y-=21;
else if(x<=0)
y+=21
}
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.10.2/p5.js"></script>
解决方案
问题是,球并没有完全停在窗口的边缘。它略微移动。使用min()
,max()
来保持球在界内。
例如:
x = max(r, x - speed_x);
y = min(height-r, y + speed_y);
看例子
var x, y, r=25, speed_x = 12, speed_y = 12;
function setup() {
createCanvas(500, 200);
x=width-r;
y=r;
}
function draw() {
background("black");
ellipse(x,y, r*2)
// move left
if (y == r && x > r)
x = max(r, x - speed_x);
// move down
if (x == r && y < height-r)
y = min(height-r, y + speed_y);
// move right
if (y == height-r && x < width-r)
x = min(width-r, x + speed_x);
// move up
if (x == width-r && y > r)
y = max(r, y - speed_y);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.10.2/p5.js"></script>
推荐阅读
- postgresql - PostgreSQL 表上的大量删除:删除表中 99.9% 的行
- react-native - 反应本机环境变量 .env 返回未定义
- javascript - 滚动到元素中的特定 y 位置
- html - 将样式更改为整个 html 后,焦点可见在某些链接中不起作用
- flutter - 颤动删除特定页面的标签栏
- socat - 是否可以使用 socat 打开现有的 tun 设备而不是创建新设备?
- mysql - 如何在groupby mysql之后获得最大值
- javascript - 在 Bootstrap 中单击时将卡片变灰
- javascript - 奇怪的行为: if( 取布尔值 false
- javascript - 与 node-gyp 相关的电子生成器错误