2016-05-16 9 views
0

私は初心者です。私は単純な2Dゲームを作っています。チュートリアルやWeb上での検索に続いて、私が望むようにコントロールをスクリプト化しました。マウスがクリックされると、適用される力はX軸とY軸の動きによって計算され、マウスボタンを離すと力が適用され、重力がオンになった:パワーを追加するためにドラッグすると、逆の角度(RigidBody2D)、奇妙なビールビールにリリースされます

if (Input.GetMouseButton(0)) 
    { 
     mouseDown = true; 
    } 

    if (!Input.GetMouseButton(0)) 
    { 
     mouseDown = false;    
    } 

    if (Input.GetAxis("Mouse X") != 0 && mouseDown) 
    {    
     xForce -= Input.GetAxis("Mouse X") * 50; 
    } 

    if (Input.GetAxis("Mouse Y") != 0 && mouseDown) 
    { 
     yForce -= Input.GetAxis("Mouse Y") * 50; 
    }   

    if (Input.GetMouseButtonUp(0)) 
    { 
     GetComponent<Rigidbody2D>().gravityScale = 1; 

     GetComponent<Rigidbody2D>().AddForce(new Vector2(xForce, yForce)); 
     yForce = 0; 
     xForce = 0; 
    } 

しかし、マウスを使用して完全にテストしている間、それは私の2台のAndroid携帯で奇妙に動作します。ボールがX軸だけの力を得ているように見えることがあり、たとえ垂直にドラッグしてもXの力が加えられても...何が問題なのでしょうか?

EDIT:私はDebug.Log(xForce)とDebug.Log(yForce)を追加し、adb logcatを使ってログを調べました。これは、単に画面をタップしても、これらの変数が増加する、私は実際にこれを解決する方法については全く考えていません...

答えて

1

個人的に私はこれだけでInput.GetMouseButtonDownInput.GetMouseButtonUpを使用して簡単に自分自身になります。以下のメソッドは、すべてのプラットフォームで同じ結果を返します。

downでは、 "startFirePosition = worldPosOfInput"のような変数を設定します。アップオン

、 "newForce = worldPosOfInput - startFirePosition"

あなたはInput.mousePositionCamera.ScreenToWorldPointを用いて、入力のワールド位置を見つけることができます。

あなたのnewForce Vector2には、ドラッグ距離(magnitude)、発射コードで使用できる発射方向などの情報が含まれるようになりました。あなたが好きなものは大きさ、クランプ方向を増やす行うためにあなたの剛体に直接newForceを割り当てるか、まずそれを微調整することができます

など

PS、必要であれば、あなたはあなたのnewForceがで剛体を取る方向を反転させることができます"worldPosOfInput - startFirePosition"を "startFirePosition - worldPosOfInput"にフリップフロップする。

+0

あなたは何を意味しているのですか?ありがとうございます。しかし、これを実装しようとすると、「worldPosOfInput」と「currentWorldPosOfInput」が何であるか、取得する方法がわかりません...私のnoobnessについてお詫びします。どこでも参考にしてください:) – RingK

+0

私は擬似コードで私の答えを残して、私がその人のために仕事をしているのではないことを確かめています。必要に応じて助けてください! これらは、[Input.mousePosition](http://docs.unity3d.com/ScriptReference/Input-mousePosition.html)と[Camera.ScreenToWorldPoint](http:// docs。)を使用して自分自身を見つける必要がある変数です。 unity3d.com/ScriptReference/Camera.ScreenToWorldPoint.html)。 – Allen

+0

@RingKもう少し有益な答えを更新しました:) – Allen

関連する問題