In meinem 2D-Einheitsspiel versuche ich, mein Sprite an den Ort meiner Berührung/des Cursors zu bewegen (momentan ist es ein Mausklick).Verschiebe den Spieler zum genauen Touch-/Mausklick-Ort
Mein Sprite ist an der Stelle (173, 48, -52.1). Wenn ich jedoch auf einen Ort klicke, der wahrscheinlich ein paar Pixel entfernt ist, wird meine Position in (399, 129, 0) geändert und mein Sprite wird scheinbar in das große Unbekannte geschleudert.
if (Input.GetMouseButtonDown(0))
{
//fingerPos = Input.GetTouch(0).position;
fingerPos = Input.mousePosition;
transform.position = fingerPos;
Debug.Log(transform.position);
}
EDIT
Aktuelle Code
if (Input.GetMouseButtonDown (0)) {
fingerPos = Camera.main.ScreenToWorldPoint(Input.mousePosition); //Desktop
transform.position = fingerPos;
Debug.Log (transform.position);
}
aktualisieren. Apperquent, wenn ich auf die Position klicke, die aufgenommen wird (und die, in die das Sprite bewegt wird), ist direkt auf der Kamera. Siehe Bild
Eigentlich in Reviewing, das funktioniert nicht ganz korrekt. Der Charakter wird an eine bestimmte Stelle auf dem Bildschirm bewegt. Nicht dort, wo ich mich berührte. – Niana
Ihre Frage ** "mein Sprite wird anscheinend in das große Unbekannte geschleudert" ** Das liegt daran, dass Sie die Pixelkoordinate der Weltkoordinate mit 'fingerPos = Input.mousePosition' zuweisen. Sie müssen es in Weltkoordinaten konvertieren, wie ich es in meiner Antwort getan habe. Das ist das Problem mit deinem Code. ** das funktioniert nicht ganz korrekt "** Sie sind nicht einmal genau, was nicht funktioniert. Das sollte das Problem des Sprites verschwinden. – Programmer
Wo ich auf den Bildschirm klicke, werden mir die Koordinaten im Debug Log angezeigt Genau das. – Niana