首先,我们需要创建一个 GameManager 来处理检查我们当前是否在线的 Bool。我们这样做是为了从所有脚本中访问它。
此代码应位于 GameManager 对象中。
// Variable to check if the player is on the line or not
public bool stayingOnLine = false;
#region Singelton
public static GameManager instance;
void Awake()
{
if (instance != null) {
Debug.LogWarning("More than one Instance of GameManager found");
return;
}
instance = this;
}
#endregion
然后我们将此代码添加到处理 LineCollider 的 GameObject 中,以处理玩家何时进入 Line 以及何时离开。发生这种情况时,我们会从 GameManager 更改变量。
此代码应位于设置为 IsTrigger 的 LineCollider 所在的 GameObject 中。
GameManager gm;
void Start() {
gm = GameManager.instance;
}
void OnTriggerEnter(Collider col) {
// Player has entered the Line ColliderBox
if (col.CompareTag("Player Tag"))
gm.stayingOnLine = true;
}
void OnTriggerExit(Collider col) {
// Player has left the Line ColliderBox
if (col.CompareTag("Player Tag"))
gm.stayingOnLine = false;
}
之后,我们还需要向管理 HoopCollider 的 GameObject 添加代码。因为当Ball进入时,我们需要检查stayOnline是真还是假,然后给出不同的分数。
GameManager gm;
void Start() {
gm = GameManager.instance;
}
void OnTriggerEnter(Collider col) {
// Ball has entered the Hoop ColliderBox
if (!col.CompareTag("Ball Tag"))
return;
if (gm.stayingOnLine)
ScoringSystem.theScore += 3;
else
ScoringSystem.theScore += 2;
}