スクリプト内に独自の関数を作成しました。この関数は、衝突が発生するとすぐに(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);
}