2016-09-19 14 views
3

最近、私はチェスが動いたときにアニメーションを持つチェスゲームを作っています。私は2つのメソッド、RotateTowardsとTranslate()を使いました。 RotateTowards()はUpdate()関数でのみ実行されます。ここに私のコードです:Update()関数でメソッドを終了した後でメソッドを停止する方法はありますか? - C# - Unity3D

using UnityEngine; 
using System.Collections; 

public class OnTouch : MonoBehaviour { 

    public GameObject cube; 
    public GameObject sphere; 
    int clicked; 
    Quaternion lastRot; 

    // Use this for initialization 
    void Start() { 
     clicked = 0; 
    } 

    // Update is called once per frame 
    void Update() { 
    if(clicked == 1) 
     { 
      var rotation = Quaternion.LookRotation(cube.transform.position - transform.position); 
      print(rotation); 
      rotation.x = 0; 
      rotation.z = 0; 
      cube.transform.rotation = Quaternion.RotateTowards(cube.transform.rotation, rotation, 100 * Time.deltaTime); 
      if(cube.transform.rotation = ???? <- No Idea){ 

       clicked = 0; 
      } 
     } 
    } 

    void OnMouseDown() 
    { 
     print("clicked"); 
     clicked = 1; 
    } 
} 

私はすべてのチェスのタイルにそのコードを添付します。だから、立方体の回転が止まった後、別のタイルをクリックしようとしました。しかし、以前のRotateTowards()メソッドは実行し続けるので、両方とも実行されました。私はIFロジックを作ろうとしましたが、私には分かりません

if(cube.transform.rotation == ??? <-- No idea){ 

clicked = 0; 

} 

どのような解決策がありますか?ありがとうございました!それは最終的な回転に達することはありません

+0

たとえば、アセットストアで利用できる無料のアセットを試してみてください。シンプルで強力なツールです。このアサーションでは、 'Update()'でそれを呼び出す必要がないため、ポイントからポイントへの変換がはるかに簡単です。 –

+0

@marecki BTw、ありがとう。私は後でそれを見つけるでしょう。 – Sena

答えて

1
if (cube.transform.rotation == rotation) 
+0

私はそれを試みました。しかし、それは動作しませんでした。私はupdate()関数で印刷(クリック)しようとしましたが、印刷1,1、および1を保ちます...それはあなたに感謝していませんでした。 – Sena

1

、それはあなたの目的地のローテーションと現在の回転との間の角度がわずかな程度よりも小さい場合ので、あなたは確認することができますが、あなたはそれが到達言うことができる非常に近くなります。

float DestAngle = 1.0f; //here we take 1 degree as the near enough angle 
    float angle = Quaternion.Angle(transform.rotation, target.rotation);//we calculate the angle between current rotaion and destination 
    if (Mathf.Abs (angle) <= DestAngle) { //we reached } 
+0

本当にありがとう。私は後でそれを試してみる。まあ、私は学生ですし、少し時間があります;) – Sena

関連する問題