我在脚本中创建了一个自己的函数,应该在发生冲突时立即执行(使用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);
}
答案 0 :(得分:0)
OnCollisionEnter仅在碰撞产生时调用一次(如其名称所示)。我认为你需要的是OnCollisionStay,它是在碰撞持续时执行的。