Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# OnControllerColliderHit触发次数过多_C#_Unity3d - Fatal编程技术网

C# OnControllerColliderHit触发次数过多

C# OnControllerColliderHit触发次数过多,c#,unity3d,C#,Unity3d,我写这个脚本是为了减少玩家的生命,让他们在与某些物体接触时回到原来的位置,但我发现每次碰撞都会触发1到4次,生命从3次减少到-1次 using UnityEngine; using System.Collections; public class HitCar : MonoBehaviour { public static int lives = 3; void OnControllerColliderHit(ControllerColliderHit col) {

我写这个脚本是为了减少玩家的生命,让他们在与某些物体接触时回到原来的位置,但我发现每次碰撞都会触发1到4次,生命从3次减少到-1次

using UnityEngine;
using System.Collections;

public class HitCar : MonoBehaviour
{
    public static int lives = 3;

    void OnControllerColliderHit(ControllerColliderHit col)
    {
        if(col.gameObject.name == "utd_car1")
        {
            Destroy(col.gameObject);
            lives--;
            if(lives <= 0)
            {
                Application.LoadLevel("LoseScreen");
            }
            else
            {
                var player = GameObject.Find("3rd Person Controller");
                player.transform.position = new Vector3(0, 2, -26); 
            }
        }
    }

    void OnLevelWasLoaded(int level) 
    {
        lives = 3;
    }
}
使用UnityEngine;
使用系统集合;
公共级HitCar:单行为
{
公共静态寿命=3;
控制器ColliderRhit(控制器ColliderRhit col)上的无效
{
如果(col.gameObject.name==“utd_car1”)
{
销毁(游戏对象列);
生命--;

如果(lives
OnControllerColliderHit
在您想击中某物几次时使用,最好是移动它

您可以切换到以下代码:

void OnCollisionEnter(Collision col) 
{
    if(col.gameObject.name == "utd_car1")
    {  
    }
}

由于某些原因,我无法触发该函数,这就是我最初使用OnControllerColliderHit的原因。不过谢谢你。@fenriskiba请看一看我在这个答案上发布的图片:这是一个可以教你如何使事物相互碰撞的表。