Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 矩形模式(中心)不围绕其中心旋转形状_Javascript_P5.js - Fatal编程技术网

Javascript 矩形模式(中心)不围绕其中心旋转形状

Javascript 矩形模式(中心)不围绕其中心旋转形状,javascript,p5.js,Javascript,P5.js,我一直在试验p5.js,在旋转方面遇到了一些问题。根据文档,我应该能够使用rectMode(center)围绕其中心旋转矩形尽管这似乎不起作用。我已经尝试将语句移动到代码的各个部分,但当您按左右箭头键时,它似乎仍在(0,0)左右旋转。感谢您的帮助 var MAX_VELOCITY=1; 班车{ 构造函数(x,y){ 这个.x=x; 这个。y=y; 这个速度=0; 该加速度=0; 这个宽度=40; 这个高度=80; 这个角度=0; } show(){ 填补(225,0255);; 冲程(0);

我一直在试验p5.js,在旋转方面遇到了一些问题。根据文档,我应该能够使用
rectMode(center)围绕其中心旋转矩形尽管这似乎不起作用。我已经尝试将语句移动到代码的各个部分,但当您按左右箭头键时,它似乎仍在(0,0)左右旋转。感谢您的帮助

var MAX_VELOCITY=1;
班车{
构造函数(x,y){
这个.x=x;
这个。y=y;
这个速度=0;
该加速度=0;
这个宽度=40;
这个高度=80;
这个角度=0;
}
show(){
填补(225,0255);;
冲程(0);
旋转(这个角度);
rect(this.x,this.y,this.width,this.height);
}
移动(){
this.velocity+=this.accel;
如果(此速度>最大速度){
该速度=最大速度;
}
如果(该速度<-最大速度){
这个速度=-最大速度;
}
这个.y+=这个速度;
}
}
函数设置(){
window.canvas=createCanvas(600600);
矩形模式(中心);
轿厢=新车(宽/2,高/2);
var-flagger=false;
}
函数绘图(){
背景(100);
car.show();
汽车。移动();
if(轿厢y<0){
car.y=0;
}
如果(轿厢y+轿厢高度>600){
轿厢y=600-轿厢高度
}
}
功能键按下(){
如果(键代码===向上箭头){
car.accel=-1;
flagger=false
控制台日志(“向上移动”);
}
如果(键代码===向下箭头){
car.accel=.1;
flagger=false;
控制台日志(“向下移动”);
}
如果(键代码===右箭头){
车角+=.1;
}
if(键代码===左箭头){
车角+=-.1;
}
}

使用rectMode(中间)确实可以控制p5.js如何解释调用rect()的x和y坐标。这并不意味着矩形将围绕其中心旋转。所有转换都是相对于位于屏幕左上角的原点进行的

因此,为了围绕矩形的中心旋转矩形,需要将原点移动到要绘制矩形的位置。这是通过调用translate()来完成的。然后旋转并在x=0和y=0处绘制矩形,该矩形现在位于新原点

var MAX_VELOCITY=1;
班车{
构造函数(x,y){
这个.x=x;
这个。y=y;
这个速度=0;
该加速度=0;
这个宽度=40;
这个高度=80;
这个角度=0;
}
show(){
填充(225,0255);
冲程(0);
翻译(这个.x,这个.y);
旋转(这个角度);
rect(0,0,this.width,this.height);
}
移动(){
this.velocity+=this.accel;
如果(this.velocity>MAX_velocity){
该速度=最大速度;
}
如果(该速度<-最大速度){
这个速度=-最大速度;
}
这个.y+=这个速度;
}
}
函数设置(){
window.canvas=createCanvas(600600);
矩形模式(中心);
轿厢=新车(宽/2,高/2);
var-flagger=false;
}
函数绘图(){
背景(100);
car.show();
汽车。移动();
if(轿厢y<0){
car.y=0;
}
如果(轿厢y+轿厢高度>600){
轿厢y=600-轿厢高度
}
}
功能键按下(){
如果(键代码===向上箭头){
car.accel=-1;
flagger=false
控制台日志(“向上移动”);
}
如果(键代码===向下箭头){
car.accel=.1;
flagger=false;
控制台日志(“向下移动”);
}
如果(键代码===右箭头){
车角+=.1;
}
if(键代码===左箭头){
车角+=-.1;
}
}