2016-11-16 74 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 or 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

的几个问题在这里:

首先:

要提高速度在单击仅在对象上,使用由摄像头在光线投射,并检查它是否击中你的对象。你的物体需要在它上面有一个对撞机部件才能工作。

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 - >光线投射部,以获取更多信息。

其次:

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()方法,如果你想要做的,当你点击它的东西。