gpt4 book ai didi

java - 如何在处理中根据对象的旋转来移动对象? (局部轴)

转载 作者:太空宇宙 更新时间:2023-11-04 09:37:01 25 4
gpt4 key购买 nike

所以我正在尝试制作一个正在处理的汽车游戏,其中汽车仅在其本地 y 轴上移动,并且通过旋转来转动。但我不知道如何让它在旋转后在局部 y 轴上移动,这就是我需要帮助的部分。我将代码发布在处理中:

class CarClass{
float speed, x, y, steering, w;
CarClass(){
speed = 5;
x = width/2;
y = height/2;
steering = radians(0);
w = 5;
}

void display(){
translate(x, y);
rotate(steering);
rectMode(CENTER);
rect(0, 0, 40, 82);
}

void up(){
y -= speed;
}
void down(){
y += speed;
}
void left(){
steering -= radians(w);
}
void right(){
steering += radians(w);
}
}

void movement(){
if(keyPressed) {
if (keyCode == UP) {
car.up();
}
if (keyCode == DOWN) {
car.down();
}
if (keyCode == LEFT) {
car.left();
}
if (keyCode == RIGHT) {
car.right();
}
}
}

CarClass car;


void setup(){
size(854,480);
car = new CarClass();
}

void draw(){
background(10,10,10);
car.display();
movement();
}

最佳答案

您必须按照转向角度定义的方向移动汽车。

在窗口中,x 轴指向左侧,y 轴指向上方。 转向角度是从向上方向顺时针测量的。
方向 vector 可以通过三角函数sin得到和cos是:

v = (sin(转向), -cos(转向))

使用此 vector 来操纵汽车的位置(x, y):

class CarClass {

// [...]

void up(){
x += sin(steering) * speed;
y -= cos(steering) * speed;
}
void down(){
x -= sin(steering) * speed;
y += cos(steering) * speed;
}

// [...]
}

关于java - 如何在处理中根据对象的旋转来移动对象? (局部轴),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56391617/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com