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;