gpt4 book ai didi

java - 如何让玩家始终指向鼠标

转载 作者:行者123 更新时间:2023-12-01 12:08:56 24 4
gpt4 key购买 nike

只是为了好玩,我想我会创建游戏《小行星》。我有点坚持这样一个事实:我无法让玩家始终查看鼠标所在的位置。这是下面的玩家类别。

public class Player extends GameObject {

private int size;

public Player(float x, float y, int width, int height) {
super(x, y, width, height);
size = width / 2 + height / 2;
}

public void update() {

}

public void render(Graphics g) {
Point mouse = MouseInfo.getPointerInfo().getLocation();
int centerX = (int) (mouse.getX() - getX());
int centerY = (int) (mouse.getY() - getY());
double angle = Math.toDegrees(Math.atan2(centerY, centerX));

Graphics2D g2d = (Graphics2D) g;
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);

g2d.setColor(Color.white);
g2d.rotate(angle, (int) getX() + getWidth() / 2, (int) getY() + getHeight() / 2);
g2d.drawLine((int) getX() + getWidth() / 2, (int) getY(), (int) getX(), (int) getY() + getHeight());
g2d.drawLine((int) getX() + getWidth() / 2, (int) getY(), (int) getX() + getWidth(), (int) getY() + getHeight());
g2d.drawLine((int) getX(), (int) getY() + getHeight(), (int) getX() + getWidth() / 2, (int) getY() + getHeight() - size / 6);
g2d.drawLine((int) getX() + getWidth(), (int) getY() + getHeight(), (int) getX() + getWidth() / 2, (int) getY() + getHeight() - size / 6);
}

public Rectangle getBounds() {
return new Rectangle((int) getX(), (int) getY(), getWidth(), getHeight());
}

public void setSize(int size) {
this.size = size;
}

public int getSize() {
return size;
}

}

我猜它的工作原理是,如果我移动鼠标,播放器会旋转,但旋转得很快。所以我问我做错了什么吗?在你问之前,我已经在谷歌上查了一下,发现了一些像这样的问题,但没有一个对我有帮助。

最佳答案

Graphics2D.rotate 的参数以弧度为单位,而不是度数。尝试从角度的计算中删除Math.toDegrees引用here

更新:根据 this commentgetLocation 给出屏幕坐标中的鼠标位置,而不是 Graphics2D 的用户坐标。您需要转换坐标,但具体操作方法取决于您的游戏库。

更新2:假设GameObject以某种方式扩展了java.awt.Component,请尝试getLocationOnScreen(引用here,来自comment noted above):

Point me_absolute = getLocationOnScreen()
int centerX = (int) (mouse.getX() - me_absolute.getX());
int centerY = (int) (mouse.getY() - me_absolute.getY());

关于java - 如何让玩家始终指向鼠标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27381692/

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