自己的功能应该每帧运行,这怎么可能?

时间:2016-03-19 18:11:22

标签: c# function collision unity5

我在脚本中创建了一个自己的函数,应该在发生冲突时立即执行(使用OnCollisionEnter)。

这个想法如下:

我有一个由键盘键(向上和向下)操纵的铃声。然后我制作了一个带有球体的正弦波线,这些球体从右向左移动(以正弦波方式)。玩家不应该通过电线移动环。

因此我在环(向上和向下对撞机)和碰撞脚本中添加了两个对撞机。

问题在于,当我一直按下向上键时,有时环可以让我穿过电线。更糟糕的是,当我什么都不做的时候,那个戒指应该沿着导线滑动......但事实并非如此。

我认为问题与这样一个事实有关,即我自己的功能并不是每帧执行的。或者您怎么看?如何每帧执行自己的功能?

这里是碰撞脚本的代码:

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

        Debug.Log ("Kollidiert mit UP"); 

        controller.MoveRingDown ();

    }

}

这里是我创建自己的函数的环形脚本的代码:

public void MoveRingDown() {

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

}


public void MoveRingUp() {

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

}

1 个答案:

答案 0 :(得分:0)

OnCollisionEnter仅在碰撞产生时调用一次(如其名称所示)。我认为你需要的是OnCollisionStay,它是在碰撞持续时执行的。