有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何计算对角线速度?

我写了一个游戏来练习编程,我遇到了这个问题。在我的游戏中,屏幕上有圆圈。当用户点击屏幕时,圆圈应该远离点击。我得到了鼠标按钮被按下点的x和y位置,还有每个圆环对象的x和y位置

我用下面的代码找到了圆的中心

float cx = circle.getX()+circle.getRadius();
float cy = circle.getY()+circle.getRadius();

为了找到从圆圈边缘到鼠标点击的距离,我这样做了

float distance = (float) Math.sqrt( ((cx-x)*(cx-x)) + ((cy-y)*(cy-y)) ) - circle.getRadius();

现在,在我检查圆是否离点击足够近后,我如何将1f的速度拆分为圆的变量vx和vy

编辑:其实我想要加速,但我想都一样


共 (3) 个答案

  1. # 1 楼答案

    找到从鼠标到圆心的线,这应该是“力”向量。这个向量会给你方向,现在你只需要知道距离是如何影响大小的

  2. # 2 楼答案

    这听起来像是sincosjava.lang.Math:http://download.oracle.com/javase/6/docs/api/java/lang/Math.html中的一个作业

    一旦知道了总速度(1f和角度(弧度),速度的水平分量是v * cos(angle),垂直分量是v * sin(angle)

    如果你想移动它,你可能需要抵消这个角度

    要计算水平和垂直距离的角度,请使用atan2

    顺便说一句,如果您不想采用不必要的平方根,并且希望避免像三元函数那样计算级数的成本,请看一下http://www.youtube.com/user/njwildberger#p/u/368/9wd0i44vK04

  3. # 3 楼答案

    你们可以先按照Mike的建议找到角度,然后使用cos和sin函数

    或使用:

    velHoriz = velocity * (cx-x) / distance
    
    velVert = velocity * (cy-y) / distance