Jump to content
Unity Insider Forum

Input.GetMouseButtonDown(0)


Kojote

Recommended Posts

Hi!

Sagt mal, gibt es etwas genaueres um eine Taste bei der Maus abzufragen als:

Input.GetMouseButtonDown(0)

Damit kann ich zwar abfragen, ob der linke Mausbutton gedrĂŒckt wird, aber dank Update-Methode habe ich das Problem das meine Aktion zwischen 32 und 64 mal aktiviert wird. 😅 GetKeyDown() liefert das selbe Problem. Möchte jedoch nur einmal wissen dass gedrĂŒckt wurde und erst wenn die Taste wieder gedrĂŒckt wird, dass nĂ€chste mal etwas passiert. :)

Hab jetzt noch einmal nachgelsen, eigentlich sollte GetMouseButtonDown nur einmal True zurĂŒckgeben. Warum macht er das aber so oft?

So sieht der Spaß als Code bei mir aus:

if(Input.GetMouseButtonDown(0) && (ClientAPI.GetTargetObject() != null) && !characterNoMove && (groundDistance < 0.07f) && !mouseOverUI) {
	Debug.LogError("ATTACK on: " + ClientAPI.GetTargetObject().Name);
    NetworkAPI.SendTargetedCommand(ClientAPI.GetTargetOid(), "/ability " + 16 + " -1 -1");
}

GrĂŒĂŸe von

Kojote

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 3 Stunden schrieb Kojote:

Hab jetzt noch einmal nachgelsen, eigentlich sollte GetMouseButtonDown nur einmal True zurĂŒckgeben.

In der Tat. Also... jein. Update wird einmalig ausgelesen und gecached. Und zwar im Update Loop. Wenn du deine Maustaste drĂŒckst, wird GetMouseButtonDown einen Frame lang true zurĂŒck geben. Innerhalb dieses Frames aber jedes Mal. Checkst du mit dem Ding mehrere Male im selben Frame?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Die if-Klausel ist in der Update-Methode drin, sollte also nur ein einziges mal ausgefĂŒhrt werden.

 

Ich habs mal so probiert:

bool mouseSave = false;
bool mouseOverUI = AtavismCursor.Instance.IsMouseOverUI();
if(Input.GetMouseButtonDown(0) && (ClientAPI.GetTargetObject() != null) && !characterNoMove && (groundDistance < 0.07f) && !mouseOverUI && !mouseSave) {
	mouseSave = true;
    Debug.LogError("ATTACK on: " + ClientAPI.GetTargetObject().Name);
    NetworkAPI.SendTargetedCommand(ClientAPI.GetTargetOid(), "/ability " + 16 + " -1 -1");
}
if(Input.GetMouseButtonUp(0) && mouseSave) {
	mouseSave = false;
}

Sollte eigentlich unmöglich sein, dass es mehr als 1 ist. Gleiches Problem wie vorher.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und fĂŒr weitere Antworten gesperrt.

×
×
  • Neu erstellen...