Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 浮球位置设置(矢量2D?)_Java_Android_Collision - Fatal编程技术网

Java 浮球位置设置(矢量2D?)

Java 浮球位置设置(矢量2D?),java,android,collision,Java,Android,Collision,好的。我的问题有点让人兴奋。假设我有一个构造函数,它看起来像这样: public Ball(Random r, float halfphonewidth, float halfphoneheight, float cx, float cy){ //te wartosci odpowiadaja za losowe polozenie i losowe wektory x = (halfphonewidth-48)*0.1f; y = (halfphoneheight-

好的。我的问题有点让人兴奋。假设我有一个构造函数,它看起来像这样:

  public Ball(Random r, float halfphonewidth, float halfphoneheight, float cx, float cy){
    //te wartosci odpowiadaja za losowe polozenie i losowe wektory
    x = (halfphonewidth-48)*0.1f;
    y = (halfphoneheight-48)*0.1f;
    vx = -0.2f + r.nextFloat();
    vy = -0.2f + r.nextFloat();

    Log.i("", "\n\n" + this.vx + "  " +this.vy+"\n\n");
    health = 3;
}
现在让我们假设我在某处声明了一个step方法——它是有效的。步骤:

 public void step(){
    x += vx;
    y += vy;

    if(x<2f || x > 98f)
        vx =- vx;


    if(y<2f || y > 98f)
        vy =- vy;
}
我有一个onTouch事件,用于侦听和检查“单击坐标”。我抓住它们,把它们传给构造函数float cx,float cy

球的第一个位置是静态的-我在构造器中永久地设置它,并且由于图像大小的原因移动48像素。它从底部中心开始,浮动到随机方向+当它与墙碰撞时,它会反转它的vx和vy

所以!我需要将球指向我单击的方向!:D 我尝试过用坐标系缩放屏幕,尝试过实现Vector2D类,因为它在最新的java中丢失了,我想,但我不太擅长线性代数,尝试过trygonometryeven循环法,但我可能是盲人


有人能给我一个解决方案吗?哪种方法是最好的,我应该尝试实施哪种方法

您需要计算当前位置和单击位置坐标之间的差值:

double xDiff = clickPoint.x - ball.x;
double yDiff = clickPoint.y - ball.y;
然后以与该差值成比例的速度移动球,在这种情况下,必须设置vx和vy,如:

n越大,球到达目标的速度就越快。当球移动时,需要更新xDiff和yDiff变量,因此当差值为0时,移动将停止

vx = xDiff * n;
vy = yDiff * n;