void Start() { grid = FindObjectOfType <GridScript>(); fireballs = new List <Fireball>(); for (int i = 0; i < fireballCount; i++) { Vector3 target = transform.position + transform.forward * (i + 1); if (grid.SquareExists(target.x, target.z)) { fireballs.Add(new Fireball() { obj = Instantiate(fireballPrefab, transform.position, Quaternion.identity), origin = transform.position + new Vector3(0, fireOriginHeight, 0), target = grid.GetSquare(target.x, target.z).top, }); } } if (fireballs.Count == 0) { Destroy(gameObject); } fireTimeRemaining = fireTime; buildingLayerMask = LayerMask.GetMask("Buildings"); }
void Start() { grid = FindObjectOfType <GridScript>(); exit = FindObjectOfType <ExitScript>(); Vector3Int coords = GetCoords(); transform.position = grid.GetSquare(coords.x, coords.z).top; startingPosition = transform.position; startingRotation = transform.rotation; targetPosition = transform.position; buildingLayerMask = LayerMask.GetMask("Buildings"); animator = GetComponentInChildren <Animator>(); SetAnimatorRotation(); }
void Start() { grid = FindObjectOfType <GridScript>(); projectile = Instantiate(projectilePrefab, transform.position, Quaternion.identity); origin = transform.position + new Vector3(0, fireOriginHeight, 0); target = transform.position + transform.forward * fireLength; if (grid.SquareExists(target.x, target.z)) { target = grid.GetSquare(target.x, target.z).top; } projectileMesh = projectile.GetComponentInChildren <MeshRenderer>(); fireTimeRemaining = fireTime; buildingLayerMask = LayerMask.GetMask("Buildings"); }
void SpawnExit() { Vector3Int player1Coords = player1.GetCoords(); Vector3Int player2Coords = player2.GetCoords(); int x; int z; int player1Distance; int player2Distance; Square square; do { x = Random.Range(0, grid.gridWidth); z = Random.Range(0, grid.gridHeight); square = grid.GetSquare(x, z); player1Distance = Mathf.Abs(player1Coords.x - x) + Mathf.Abs(player1Coords.z - z); player2Distance = Mathf.Abs(player2Coords.x - x) + Mathf.Abs(player2Coords.z - z); }while (player1Distance < minDistance || player2Distance < minDistance || grid.HasBuilding(square)); grid.SetSquareSurface(x, z, exitSurfacePrefab); exitSpawned = true; }
void Update() { float targetDistance = Vector3.Distance(targetPosition, transform.position); if (ascending) { ascendTimeRemaining -= Time.deltaTime; if (ascendTimeRemaining > 0) { transform.position += GetComponentInChildren <SpriteRenderer>().transform.up *ascendHeight *Time.deltaTime / ascendTime; } else { grid.resetting = true; SceneManager.LoadScene("Game"); } } else if (targetDistance > .01f) { Square square = grid.GetSquare(transform.position); float currentSpeed = moveSpeed; if (square.surface != null) { SlimeSurfaceScript slime = square.surface.GetComponent <SlimeSurfaceScript>(); if (slime != null) { currentSpeed /= slime.speedMultiplier; } else { IceSurfaceScript ice = square.surface.GetComponent <IceSurfaceScript>(); if (ice != null) { currentSpeed /= ice.speedMultiplier; } } } transform.position = Vector3.SmoothDamp(transform.position, targetPosition, ref moveVelocity, currentSpeed); } else if (targetDistance > 0) { transform.position = targetPosition; moveVelocity = Vector3.zero; Square square = grid.GetSquare(transform.position); if (square.surface != null) { square.surface.OnStep(GetComponent <PlayerScript>()); } } else if (fireCooldownRemaining <= 0 && respawnTimer <= 0) { GetInput(); } if (fireCooldownRemaining > 0) { fireCooldownRemaining -= Time.deltaTime; } if (playerHealthCurrent <= 0) { PlayerDeath(); } // handle respawn timer and flicker if (respawnTimer > 0) { respawnTimer -= Time.deltaTime; sineIndex += Time.deltaTime; float sineFlicker = Mathf.Abs(sineAmplitude * Mathf.Sin(sineOmega * sineIndex)); Color tmp = GetComponentInChildren <SpriteRenderer>().color; tmp.a = sineFlicker; GetComponentInChildren <SpriteRenderer>().color = tmp; } else { Color tmp = GetComponentInChildren <SpriteRenderer>().color; tmp.a = 1f; GetComponentInChildren <SpriteRenderer>().color = tmp; } }