2016-11-16 2 views
0

У меня есть игра с единством и в ней вращающийся игровой объект, который увеличивает его скорость при нажатии.Остановить вращение для щелчка правой кнопкой мыши на игровом объекте

Моя проблема в том, что игра не работает так, как я ее хочу. Прямо сейчас, если я нажимаю любую часть экрана, это увеличивает скорость вращения игрового объекта. С другой стороны, если я держу палец на экране, игровой объект начинает замедляться, а затем начинает вращаться в противоположном направлении.

Я хочу, чтобы вращение объекта увеличивалось, когда я нажимаю на него, а не только, если я нажимаю на любую часть экрана. Кроме того, я не знаю, почему удерживание меняет направление вращения.

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; 
    } 

ответ

0

Необходимо использовать входной сигнал. GetMouseButtonUp или Input.GetMouseButtonDown, NOT A Input.GetMouseButton, этот метод используется для зажима.

использование Попробуйте этот код:

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

Несколько вопросов здесь:

Во-первых:

Для увеличения скорости при нажатии на только объект, использование raycasting из камеры, и проверьте, если он попадает на ваш объект. Для этого вам понадобится компонент коллайдера для этого.

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

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

См https://docs.unity3d.com/Manual/CameraRays.html -> Raycasting раздел, для получения дополнительной информации.

Во-вторых:

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 

Использование Input.GetMouseButtonDown(..) в методе Update(), если вы хотите сделать что-то, когда вы щелкаете на нем.

Смежные вопросы