Ich möchte eine Klasse erstellen, die an dem Punkt aufnimmt, an dem ich [XY-Punkt auf meinem Telefonbildschirm] berühre. Ich habe viel gesucht, aber ich kann keine gute Quelle finden, von der ich lesen kann. Ich habe eine Klasse erstellt, die nur in X-Richtung schießen kann. Ich habe das Bild auch hochgeladen. Jede Hilfe wäre willkommen.Aufnahme in XY-Richtung
Vielen Dank im Voraus.
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;
}
Dies ist der letzte Code, den ich aktualisiert haben, aber ein kleines Problem.
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;
}
** DIES IST DAS YOUTUBE VIDEO DES PROBLEMS ** https://youtu.be/C6AdnU_2Qz4
https://en.wikipedia.org/wiki/Basis_(linear_algebra) https://www.mathsisfun.com/algebra/vectors.html – Selvin
danke @selvin. aber wie kann ich all das in Java-Code stecken? Bitte erkläre. – user5234003