Esempio n. 1
0
    public IEnumerator GenerateNavmeshAndComplete(DungeonSegment segment, bool first = false)
    {
        segment.GenerateNavMesh();
        float   s = 0.0f;
        Vector3 pos;

        while (s <= 1.0f)
        {
            yield return(new WaitForFixedUpdate());

            pos   = segment.transform.position;
            pos.y = segmentFallHeight - segmentFallCurve.Evaluate(Mathf.Clamp01(s)) * segmentFallHeight;
            segment.transform.position = pos;
            s += Time.fixedDeltaTime / segmentFallTime;
        }
        if (first)
        {
            SpawnHeroes(segment);
        }
        segment.CompleteGenerate(!first);
        if (first)
        {
            playerHero.GetComponent <UnitMovementController>().Enable();
            foreach (HeroUnit hero in PartyManager.it.party)
            {
                hero.GetComponent <UnitMovementController>().Enable();
            }
        }
    }
Esempio n. 2
0
    public void Generate(bool first = false)
    {
        DungeonSegment prefab  = segmentPrefabs[Random.Range(0, segmentPrefabs.Length)];
        DungeonSegment segment = Instantiate(prefab);

        segment.builder = this;

        Vector3 position = transform.position;

        if (segments.Count > 0)
        {
            position = segments[segments.Count - 1].GetExitPosition();
        }
        segment.transform.parent   = transform;
        segment.transform.position = position + Vector3.up * segmentFallHeight;
        segments.Add(segment);

        segment.StartGenerate();
        StartCoroutine(GenerateNavmeshAndComplete(segment, first));
    }
Esempio n. 3
0
    void SpawnHeroes(DungeonSegment segment)
    {
        playerHero = Instantiate(playerHeroPrefab);
        playerHero.transform.parent = segment.transform;
        cameraController.target     = playerHero.transform;
        playerHero.GetComponent <UnitMovementController>().Disable();
        playerHero.transform.position = segment.transform.position;
        Vector3 spawnDir = -Vector3.right;

        foreach (HeroUnit hero in PartyManager.it.party)
        {
            hero.transform.position = playerHero.transform.position + spawnDir * 2.0f;
            hero.transform.parent   = segment.transform;
            hero.GetMovementController().SetLeader(playerHero);
            hero.ClearUnitsInRange();
            hero.GetMovementController().Enable();
            hero.GetAbilityController().enabled = true;
            spawnDir = Quaternion.AngleAxis(-90, Vector3.up) * spawnDir;
        }
    }