2016-11-16 8 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

ここにいくつかの問題:まず

、唯一のオブジェクトをクリックすると速度を上げるカメラからレイキャスティングを使用し、それかどうかを確認するにはあなたのオブジェクトに当たる。このためには、オブジェクトにコライダーコンポーネントが必要です。詳細については、>レイキャスティングセクション -

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を参照してください。

第二:あなたのUpdate()方法で

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(..)あなたはそれをクリックしたときに何かをしたい場合。

関連する問題