2016-11-16 1 views
0

Ich habe eine Einheit Spiel und in ihm ein rotierendes Spielobjekt, das seine Geschwindigkeit erhöht, wenn es geklickt wird.Stop Dreh für einen Klick direkt auf das Spielobjekt

Mein Problem ist, dass das Spiel nicht so funktioniert, wie ich es will. Wenn ich jetzt auf einen Teil des Bildschirms klicke, erhöht sich die Rotationsgeschwindigkeit des Spielobjekts. Auf der anderen Seite, wenn ich den Finger auf dem Bildschirm halte, beginnt das Spielobjekt langsamer zu werden und beginnt sich dann in die entgegengesetzte Richtung zu drehen.

Ich möchte die Drehung des Objekts zu erhöhen, wenn ich darauf klicke, nicht nur, wenn ich auf einen beliebigen Teil des Bildschirms klicken. Außerdem weiß ich nicht, warum Niederhalten die Drehrichtung umkehrt.

var speed = 1; 
var click = 0; 

Screen.orientation = ScreenOrientation.LandscapeLeft; 

function Update(){ 

{ 
    transform.Rotate(0,0,speed); 
} 

if(Input.GetMouseButton(0)) 
{ 

    if(speed != 0) 
    { 
     speed = 0; 
    } else { 
     click++; 
     speed = click; 
    } 

Antwort

0

Sie müssen Eingabe verwenden. GetMouseButtonUp oder Input.GetMouseButtonDown, NICHT A Input.GetMouseButton, diese Methode zum Klemmen verwendet.

Ausprobieren Verwenden Sie diesen Code:

var speed = 1; 
var click = 0; 

Screen.orientation = ScreenOrientation.LandscapeLeft; 

function Update(){ 

{ 
    transform.Rotate(0,0,speed); 
} 

if(Input.GetMouseButtonDown(0)) 
{ 

    if(speed != 0) 
    { 
     speed = 0; 
    } else { 
     click++; 
     speed = click; 
    } 
0

Einige Probleme hier:

Erstens:

Um Geschwindigkeit zu erhöhen, auf nur auf das Objekt klicken, Verwendung von Kamera Raycastings, und prüfen, ob es trifft dein Objekt. Ihr Objekt benötigt eine Collider-Komponente, damit dies funktioniert.

RaycastHit hit; 
Ray ray = camera.ScreenPointToRay(Input.mousePosition); 

if (Physics.Raycast(ray, out hit)) 
{ 
    Transform objectHit = hit.transform; 
    objectHit.Rotate(0,0,speed); 
} 

finden https://docs.unity3d.com/Manual/CameraRays.html -> Raycastings Abschnitt, für weitere Informationen.

Zweitens:

Input.GetMouseButtonDown(..) // returns true at the instance your mouse button transits from up to down 
Input.GetMouseButton(..) // returns true as long as your mouse button is held down 

Verwenden Input.GetMouseButtonDown(..) in Ihrer Update() Methode, wenn Sie wollen etwas tun, wenn Sie darauf klicken.

Verwandte Themen