我写这个脚本是为了减少玩家的生命,并在与某些物体接触时将其移动回原来的位置,但是我发现每次碰撞它会触发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;
    }
}


防止它每次碰撞触发一次以上的任何方法将不胜感激。

最佳答案

OnControllerColliderHit用于想要几次击打某些东西(最好移动它)的情况。

您可以切换到以下代码:

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

10-05 23:03