最近,我一直在尝试在Processing中构建一种帆船模拟器,并遇到了一个问题。我不打算详细介绍项目本身,因为我认为这不是真的相关。
这是我的问题:我需要找到一种方法让相机环顾四周,同时仍然专注于中间的物体(船)。通过这个我的意思是我想找到一个相机的圆形路径,同时它绕着船环绕。这用于许多模拟器和视频游戏,所以我认为它可以在我的项目中使用。
我已经考虑过旋转每个物体而不是相机,但我宁愿不这样做,因为处理船,帆和风已经会导致很多旋转,这只会使旋转复杂化每次玩家拖动鼠标以转动他们正在寻找的点时,它都会再次出现。因此,我认为找到相机的这条路是我现在唯一的选择,我不知道如何开始进行数学计算(进入9年级)。
如果有人在阅读此内容之前遇到此问题,(使用鼠标在相机周围旋转相机)请尝试给我一些提示。谢谢!
代码:
float x,y,z,ry;
int trimmingLimit;
void setup()
{
size(800, 600, P3D);
x = width/2;
y = height/2;
z = 0;
ry = 10;
trimmingLimit = int(random(75,84)); //randomizing sheet length length
}
void draw()
{
background(#FF844B);
stroke(255);
translate(x,y,z);
pushMatrix();
rotateY(radians(ry)); //mainsheet trimming and easing
triangle(-120, 50, 0, -140, 0, 50); //sail
ry=mouseY/(height/trimmingLimit); //since 80 to 85^o is the maximum amount
//the sail can be drawn, the height of the window is adjustable
//and divided by 90.
popMatrix();
noStroke();
pushMatrix();
translate(0,500,0);
fill(98,122,255,50);
cylinder(1000,500,15);
rectMode(CENTER);
popMatrix();
fill(#AD8B7C);
stroke(255);
pushMatrix();
translate(0,75);
rotateX(radians(0));
translate(0,75);
triangle(-180,100,0,-50,180,100);
popMatrix();
fill(100);
}
float d(float n) //converting to the correct type of degrees (with 0 being wind)
{
return n-90;
}