Java 中的基于划痕的运动
Scratch-Based Movement in Java
我正在尝试编写一个程序,让一个对象以一定的速度在一个方向上移动。 Java 没有任何确定方向的内置函数。如何在 Java 中编写下面的 Scratch Code?还有没有办法让一个对象指向另一个对象?
Screenshot of Scratch code to make object move in a direction or point toward mouse
我希望代码如下所示:
public void move(int direction, int distance) {
// 0 degrees is up, 90 is right, 180 is down, 270 is left.
}
另外如果你觉得有更好的方式来问这个问题,请给我提示,这是我在这个网站上的第一个问题。
嗯,我和一个非常擅长几何的朋友一起想出来的。
这些是我们提出的功能:
// Movement
public void move(int speed) {
x += speed * Math.cos(direction * Math.PI / 180);
y += speed * Math.sin(direction * Math.PI / 180);
}
// Pointing toward an object
public void pointToward(SObject target) {
direction = Math.atan2(target.y - y, target.x - x) * (180 / Math.PI);
}
// Pointing toward the mouse
public void pointTowardMouse() {
direction = Math.atan2(Main.mouse.getY() - y, Main.mouse.getX() - x) * (180 / Math.PI);
}
// Ensure that the degrees of rotation stay between 0 and 359
public void turn(int degrees) {
double newDir = direction;
newDir += degrees;
if (degrees > 0) {
if (newDir > 359) {
newDir -= 360;
}
} else if (degrees < 0) {
if (newDir < 0) {
newDir += 360;
}
}
direction = newDir;
}
我想这可以帮助其他在游戏中需要旋转移动的人。
我正在尝试编写一个程序,让一个对象以一定的速度在一个方向上移动。 Java 没有任何确定方向的内置函数。如何在 Java 中编写下面的 Scratch Code?还有没有办法让一个对象指向另一个对象?
Screenshot of Scratch code to make object move in a direction or point toward mouse
我希望代码如下所示:
public void move(int direction, int distance) {
// 0 degrees is up, 90 is right, 180 is down, 270 is left.
}
另外如果你觉得有更好的方式来问这个问题,请给我提示,这是我在这个网站上的第一个问题。
嗯,我和一个非常擅长几何的朋友一起想出来的。 这些是我们提出的功能:
// Movement
public void move(int speed) {
x += speed * Math.cos(direction * Math.PI / 180);
y += speed * Math.sin(direction * Math.PI / 180);
}
// Pointing toward an object
public void pointToward(SObject target) {
direction = Math.atan2(target.y - y, target.x - x) * (180 / Math.PI);
}
// Pointing toward the mouse
public void pointTowardMouse() {
direction = Math.atan2(Main.mouse.getY() - y, Main.mouse.getX() - x) * (180 / Math.PI);
}
// Ensure that the degrees of rotation stay between 0 and 359
public void turn(int degrees) {
double newDir = direction;
newDir += degrees;
if (degrees > 0) {
if (newDir > 359) {
newDir -= 360;
}
} else if (degrees < 0) {
if (newDir < 0) {
newDir += 360;
}
}
direction = newDir;
}
我想这可以帮助其他在游戏中需要旋转移动的人。