最近、私はチェスが動いたときにアニメーションを持つチェスゲームを作っています。私は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;
}
どのような解決策がありますか?ありがとうございました!それは最終的な回転に達することはありません
たとえば、アセットストアで利用できる無料のアセットを試してみてください。シンプルで強力なツールです。このアサーションでは、 'Update()'でそれを呼び出す必要がないため、ポイントからポイントへの変換がはるかに簡単です。 –
@marecki BTw、ありがとう。私は後でそれを見つけるでしょう。 – Sena