2016-03-19 10 views
0

スクリプト内に独自の関数を作成しました。この関数は、衝突が発生するとすぐに(OnCollisionEnterを使用して)実行する必要があります。独自の機能はすべてのフレームで実行する必要がありますが、これはどのように可能ですか?

アイデアは、次のようになります。

私は、キーボード(上下)のキーによって操縦されたリングを持っています。それから、正弦波のやり方で、右から左に動いている球を持つ正弦波線を作りました。プレーヤーは、ワイヤを通ってリングを動かすべきではありません。

したがって、リングに2つのコライダー(アップとダウンのコライダー)とコリジョンスクリプトを追加します。

問題は、アップキーを常に押していると、リングがワイヤを通って移動することがあります。私が何もしないときでさえ、悪化すると、リングはワイヤーに沿ってスライドするはずです...しかし、それはしません。

私は自分の機能がフレームごとに実行されないという事実に関連していると思います。あなたはどう思いますか?フレームごとに独自の機能を実行するにはどうすればよいですか?

ここで衝突スクリプトのコード:

void OnCollisionEnter(Collision collUP) 
{ 
    if (collUP.gameObject.name == "Sphere(Clone)") { 

     Debug.Log ("Kollidiert mit UP"); 

     controller.MoveRingDown(); 

    } 

} 

そして、ここで私が独自の関数を作成したリングスクリプトのコード:OnCollisionEnterは、ときにのみ、一度だけ呼び出され

public void MoveRingDown() { 

    transform.position = transform.position + new Vector3 (0f, -tilt, 0f); 

} 


public void MoveRingUp() { 

    transform.position = transform.position + new Vector3(0f, tilt, 0f); 

} 

答えて

0

を衝突が生成されます(名前が読み込まれると)。あなたが必要とするのは、衝突が続く間に実行されるOnCollisionStayです。

関連する問題