2016-04-07 7 views
0

MethodeOne内のyes条件が満たされた場合、SmoothDampになります。しかしSmoothDampvoid Update()でのみ動作しますか?誰かに代替手段を提供することはできますか?SmoothDampはUpdate()内でのみ動作します

public Transform target; 
public float smoothTime = 0.3F; 
private Vector3 velocity = Vector3.zero; 

private void MethodOne() 
{ 
    if(yes) 
    { 
     Vector3 targetPosition = target.TransformPoint(new Vector3(0, 5, -10)); 
     transform.position = Vector3.SmoothDamp(transform.position, targetPosition, ref velocity, smoothTime); 
     //SmoothDamp works only in Update() 
    } 
} 
+0

数百万のコルーチンの例:http://stackoverflow.com/a/36408732/294884 – Fattie

答えて

0

Vector3.SmoothDampは、1つのフレーム内のすべてではなく、時間の経過とともに機能する方法です。 このようなメソッドは、複数回呼び出されるもので使用されなければなりません。 Update()は、フレームごとに1回呼び出されます。これは他のメソッドの一種です。

Update()内でMethodOne()を呼び出すことができます。

Update()を使用しない場合は、whileループとyieldを使用してCoroutineを書くことができます。次に、その中で目的のメソッド(SmoothDamp)を呼び出します。 CoroutinesStartCoroutineStopCoroutineをお読みになることをお勧めします。最後に、これを行うなら、あなたのループの内部を譲ることを覚えておいてください!歩留まりがなければ、あなたのゲームはハングアップします。

関連する問題