private void CreateObstacle(ref ObstaclePositionType obstaclePositionType) { var obstacleTypeCount = Enum.GetNames(typeof(ObstacleType)).Length; var randomObstacleType = (ObstacleType)Random.Range(0, obstacleTypeCount); ObjectPool obstaclePool = null; if (randomObstacleType == ObstacleType.Pipe) { obstaclePool = RoadManager.Instance.pipeObstaclePool; } else { if (GameManager.Instance.levelStarted) { obstaclePool = RoadManager.Instance.airObstaclePool; } } if (obstaclePool != null) { var obstacle = obstaclePool.PopObject().GetComponent <Obstacle>(); var obstaclePositionCount = Enum.GetNames(typeof(ObstaclePositionType)).Length; obstaclePositionType = (ObstaclePositionType)Random.Range(0, obstaclePositionCount); obstacle.gameObject.SetActive(true); obstacle.Setup(this, obstaclePositionType); _obstacle = obstacle; } }
public override void Setup(Pipe pipe, ObstaclePositionType positionType) { transform.SetParent(pipe.transform); var obstaclePosition = Vector3.zero; if (positionType == ObstaclePositionType.Bottom) { obstaclePosition.y = pipe.meshRenderer.bounds.min.y + 2.5f; } else { obstaclePosition.y = pipe.meshRenderer.bounds.max.y - 2.5f; } transform.position = obstaclePosition; }
private void CreatePieces(bool hasObstacle, ObstaclePositionType obstaclePositionType) { var startPositionOffset = 2.5f; var endPositionOffset = 2.5f; if (hasObstacle) { switch (obstaclePositionType) { case ObstaclePositionType.Bottom: startPositionOffset = 4.0f; break; case ObstaclePositionType.Top: endPositionOffset = 4.0f; break; } } var startPosition = meshRenderer.bounds.min.y + startPositionOffset; var endPosition = meshRenderer.bounds.max.y - endPositionOffset; var length = endPosition - startPosition; var meshY = RoadManager.Instance.pieceData.Bounds.y; var count = (int)(length / meshY); // var distance = length / count; for (var i = 0; i < count; i++) { var pieceHolder = RoadManager.Instance.pieceHolderPool.PopObject().GetComponent <PieceHolder>(); var pos = Vector3.zero; pos.y = startPosition + (i * meshY); pieceHolder.Setup(this, pos); _pieceHolders.Add(pieceHolder); } }
public override void Setup(Pipe pipe, ObstaclePositionType positionType) { var obstaclePosition = Vector3.zero; if (positionType == ObstaclePositionType.Bottom) { obstaclePosition.y = pipe.meshRenderer.bounds.min.y + 2.5f; } else { obstaclePosition.y = pipe.meshRenderer.bounds.max.y - 2.5f; } var scale = Vector3.zero; scale.x = pipe.transform.lossyScale.x + 0.5f; scale.y = 0.5f; scale.z = pipe.transform.lossyScale.z + 0.5f; transform.position = obstaclePosition; transform.localScale = scale; transform.SetParent(pipe.transform); }
public abstract void Setup(Pipe pipe, ObstaclePositionType positionType);