Java 射弹角度

标签 java trigonometry angle

所以,我正在制作一个平台游戏,您应该能够拖动鼠标以从角色沿鼠标释放的方向发射射弹,速度为两点之间的距离。

    public void mouseDragged(MouseEvent e) {
    player.setAiming(true);
    Point2D.Float aimpoint = new Point2D.Float(e.getXOnScreen(), e.getYOnScreen());
    player.setAimpoint(aimpoint);
    player.setAimDistance(GetDistanceToPoint(player.getPos(), aimpoint));
}
public static float GetAngleOfLine(Point2D.Float p1, Point2D.Float p2) { 
    double xDiff = p2.x - p1.x; 
    double yDiff = p2.y - p1.y; 
    System.out.println("P1X: " + p1.x + " P1Y: " + p1.y + " P2X: " + p2.x + " P2Y: " + p2.y + " Angle: " + Math.toDegrees(Math.atan2(yDiff, xDiff)));
    return (float) Math.toDegrees(Math.atan2(yDiff, xDiff));
}
public static float GetDistanceToPoint(Point2D.Float p1, Point2D.Float p2){
    float distance = (float) Math.sqrt(Math.pow(p2.y - p1.y, 2) + Math.pow((p2.x - p1.x), 2));
    return distance;
}

然后,当鼠标松开时,

player.setAimingangle(GetAngleOfLine(player.getPos(), player.getAimpoint()));

然后创建一个弹丸,其中角度为player.aimingangle,强度为player.aimingdistance:

        float yvel = (float) (strength * Math.sin(angle));
    float xvel = (float) (strength * Math.cos(angle));

我收到了非常奇怪的射弹,它们飞得到处都是。

最佳答案

Math.sinMath.cos 采用弧度参数,但您向它们提供度数。

关于Java 射弹角度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18939167/

相关文章:

Python 度数默认为弧度

c++ - 计算两个角度区间的交集

java - org.apache.ignite.IgniteException : Failed to find deployed service

php - php deg2rad() 是否等于 mysql radians()

c - 如何在 C 中使用以度为单位的三角函数?

android - 计算android中三点之间的角度

c# - C# 中的小行星游戏运动

java - 分割长行并缩进并输出

java - web.xml中的Java错误页面不适用于所有请求

java - Maven - 无法解析项目 X 的​​依赖关系