在 Unity 中使用触发器计分

Scoring points using triggers in Unity

我希望每当我的玩家通过障碍物的特定部分时,它应该为得分增加 2 分。为了做到这一点,我制作了一个 child 障碍物。 child 包含覆盖障碍物特定部分的盒子碰撞器(我在 Unity 中打开了 Is Trigger)。

child 上的代码具有触发器 -

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Score : MonoBehaviour
{
    float points;
    
    void Start()
    {
    
    }

    void Update()
    {
        Debug.Log(points);
    }
    void OnTriggerExit2D(Collider2D other)
   {
        points += 2f;
   }
}

问题是在控制台中,点只显示 0 和 2,就像这样 -

Console

而过障碍后应该是0,2,4,6...

也正在创建原始障碍的克隆,即我每次通过一个新的克隆;如果这是导致问题的原因。

是的,很明显它会打印出 0 和 2,因为您的脚本不使用集中评分系统,它只是更新特定实例中的分数。您可以创建另一个脚本,将其称为 GameManager,您可以在其中设置玩家得分变量,并在触发子函数的退出函数时增加该 GameManager 变量玩家得分的得分。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class GameManager : MonoBehaviour
{
    public float playerPoints = 0f;
}

在乐谱脚本中

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Score : MonoBehaviour
{
public GameManager manager; // Drag and drop the gamemanager object from scene in to this field
    void OnTriggerExit2D(Collider2D other)
   {
        manager.playerPoints += 2f;
        Debug.Log(manager.playerPoints);
   }
}