Esempio n. 1
0
    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");
    }
Esempio n. 2
0
    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");
    }
Esempio n. 4
0
    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;
    }
Esempio n. 5
0
    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;
        }
    }