так что у меня есть сценарий Enemy Guard для невидимой игры, где ckecked, если игрок был замечен, чтобы показать состояние игры закончено.(игра поверх текста в пользовательском интерфейсе).
void Start()
{
if(player == null)
{
GameObject.FindGameObjectWithTag("Player");
}
viewAngle = spotlight.spotAngle;
originalSpotlighyColour = spotlight.color;
Vector3[] waypoints = new Vector3[pathHolder.childCount];
for (int i = 0; i < waypoints.Length; i++)
{
waypoints [i] = pathHolder.GetChild (i).position;
waypoints [i] = new Vector3 (waypoints [i].x, transform.position.y, waypoints [i].z);
}
StartCoroutine (FollowPath (waypoints));
}
void Update()
{
if (CanSeePlayer())
{
playerVisibleTimer += Time.deltaTime;
// spotlight.color = Color.red;
} else
{
playerVisibleTimer -= Time.deltaTime;
// spotlight.color = originalSpotlighyColour;
}
playerVisibleTimer = Mathf.Clamp(playerVisibleTimer, 0, timeToSpotPlayer);
spotlight.color = Color.Lerp(originalSpotlighyColour, Color.red, playerVisibleTimer / timeToSpotPlayer);
if(playerVisibleTimer>= timeToSpotPlayer)
{
if (OnGuardHasSpottedPlayer != null)
{
OnGuardHasSpottedPlayer();
StopAllCoroutines();
Seek();
GameUI.gameIsOver = true;
}
}
}
Условие простое:
Если игрок виден, появляется изображение игры поверх, и игрок нажимает клавишу ПРОБЕЛ, чтобы перезапустить сцену.Но если изображение в пользовательском интерфейсе отображается только один раз, функция завершения игры больше не вызывается.Вызываются в первый раз, когда игрок теряет уровень, после этого вы можете войти в видение врага и ничего не произойдет.