2022-07-30 00:47:44 +08:00
|
|
|
|
using System.Collections;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using UnityEngine;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public class ObstacleManager : UnitySingleton<ObstacleManager>
|
|
|
|
|
{
|
|
|
|
|
[Header("各种障碍物的预制体")]
|
|
|
|
|
public GameObject[] obstacles;
|
|
|
|
|
[Header("出现障碍物的时间间隔")]
|
|
|
|
|
public float creatObstaclesTimeInterval;
|
|
|
|
|
[Header("生成障碍物的位置,仅控制xz,y由预制体决定")]
|
|
|
|
|
public Transform obstacleCreatPostion;
|
|
|
|
|
|
|
|
|
|
private Horse horse;
|
2022-08-26 18:11:05 +08:00
|
|
|
|
private Obstacle lastObstacle;
|
2022-07-30 00:47:44 +08:00
|
|
|
|
|
|
|
|
|
void Start()
|
|
|
|
|
{
|
|
|
|
|
horse = FindObjectOfType<Horse>();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void StartCreatObstacle()
|
|
|
|
|
{
|
|
|
|
|
StartCoroutine(CreatAObstacle());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private IEnumerator CreatAObstacle()
|
|
|
|
|
{
|
|
|
|
|
float randomT = Random.Range(0f,1f);
|
|
|
|
|
GameObject obstacle;
|
2022-08-19 14:23:35 +08:00
|
|
|
|
if(randomT < 0.25f)
|
2022-07-30 00:47:44 +08:00
|
|
|
|
obstacle = obstacles[0];
|
2022-08-19 14:23:35 +08:00
|
|
|
|
else if(randomT < 0.5f)
|
2022-07-30 00:47:44 +08:00
|
|
|
|
obstacle = obstacles[1];
|
2022-08-19 14:23:35 +08:00
|
|
|
|
else if(randomT < 0.75f)
|
2022-07-30 00:47:44 +08:00
|
|
|
|
obstacle = obstacles[2];
|
2022-08-26 18:11:05 +08:00
|
|
|
|
else if(lastObstacle != null && lastObstacle.obstacleType != ObstacleType.humanHorseBreak)
|
2022-08-19 14:23:35 +08:00
|
|
|
|
obstacle = obstacles[3];
|
2022-08-26 18:11:05 +08:00
|
|
|
|
else{
|
|
|
|
|
StartCoroutine(CreatAObstacle());
|
|
|
|
|
yield break;
|
|
|
|
|
}
|
2022-07-30 00:47:44 +08:00
|
|
|
|
Vector3 xz = obstacleCreatPostion.position;
|
|
|
|
|
Vector3 pos = new Vector3(xz.x,obstacle.transform.position.y,xz.z);
|
|
|
|
|
GameObject.Instantiate(obstacle, pos, Quaternion.identity);
|
|
|
|
|
yield return new WaitForSeconds(creatObstaclesTimeInterval);
|
|
|
|
|
if(horse.IsHorseStillAlive()) StartCoroutine(CreatAObstacle());
|
2022-08-26 18:11:05 +08:00
|
|
|
|
lastObstacle = obstacle.GetComponent<Obstacle>();
|
2022-07-30 00:47:44 +08:00
|
|
|
|
}
|
|
|
|
|
}
|