我想創建一個類,它可以觸摸我觸摸的點[手機屏幕上的XY點]。我搜索了很多,但我無法找到任何好的資源來讀取。 我創造了一個只能在X方向拍攝的課程。我也上傳了圖片。 任何幫助,將不勝感激。在XY方向拍攝
在此先感謝。
public class Gun {
private float x, y;
private int speedX;
private boolean Visible;
private Rect rect;
public Gun (int startX, int startY)
{
x = startX;
y = startY;
speedX = 220;
Visible = true;
rect = new Rect();
}
public void update(float delta)
{
x += speedX*delta;
if (x > 800)
{
Visible = false;
}
updateRect();
}
private void updateRect()
{
rect.set((int) x, (int) y, (int) x + 20, (int) y + 10);
}
public void onCollideWith(Enemy e)
{
Visible = false;
}
這是最近的代碼,我已更新但有一點問題。
public class Gum {
private float x,y; // x & y position of the gun
private float bulletSpeed,speedX,speedY;
//speedX and speedY are define to update x & y position of bullets
private boolean Visible;
private Rect rect;
private float handlerX, handlerY; //to get the X and Y value of the touch
public Gum(int startX, int startY)
{
x = startX;
y = startY;
bulletSpeed = 220; //
Visible = true;
rect = new Rect();
}
public void update(float delta)
{
x+= speedX*delta;
y += speedY*delta;
if(x>800 || y >450)
{
Visible = false;
}
updateBullets();
updateRect();
}
private void updateBullets()
{
handlerX = InputHandler.scaledX ;
handlerY = InputHandler.scaledY ;
//location of the touch - location of the gun
float deltaX = handlerX - x;
/* THIS DEFINE IN ANOTHER CLASS (InputHandler)
* scaledX = (int) ((event.getX()/v.getWidth())* *GameMainActivity.GAME_WIDTH);
scaledY = (int) ((event.getY()/v.getHeight()) * GameMainActivity.GAME_HEIGHT);
*/
float deltaY = handlerY - y;
float length =(float) (Math.sqrt(Math.pow(deltaX, 2)) + Math.pow(deltaY, 2));
float normalDeltaX = deltaX/ length;
float normalDeltaY = deltaY/length;
speedX = (bulletSpeed * normalDeltaX);
speedY = bulletSpeed * normalDeltaY;
}
**這是問題的YOUTUBE視頻** https://youtu.be/C6AdnU_2Qz4
https://en.wikipedia.org/wiki/Basis_(linear_algebra)https://www.mathsisfun.com/algebra/vectors.html – Selvin
thanks @selvin。但我怎麼能把所有這一切在Java代碼?請解釋。 – user5234003