コード例 #1
0
ファイル: Game.cs プロジェクト: porglezomp/LD33
    public void StartGame(string level)
    {
        Debug.Log("load " + level);
        Pints.Reset();
        var tilemap = GameObject.Find("Tilemap").GetComponent <Tilemap>();

        menu.SetActive(false);
        hud.SetActive(true);
        finishScreen.SetActive(false);
        tilemap.InitWithMap(level);
        _running = true;
    }
コード例 #2
0
ファイル: Enemy.cs プロジェクト: porglezomp/LD33
    IEnumerator FadeOut()
    {
        GetComponent <Collider>().enabled = false;
        var renderer = transform.Find("enemy/Cube_001").GetComponent <Renderer>();

        renderer.material          = fadeMaterial;
        renderer.shadowCastingMode = ShadowCastingMode.Off;
        var color = renderer.material.color;

        const float fadeOutDuration = 2;
        float       timer           = fadeOutDuration;

        while (timer > 0)
        {
            timer  -= Time.deltaTime;
            color.a = timer / fadeOutDuration;
            var fraction = Time.deltaTime / fadeOutDuration;
            Pints.AddPints(numberOfPints * fraction);
            renderer.material.color = color;
            yield return(0);
        }
        Destroy(gameObject);
    }
コード例 #3
0
ファイル: Enemy.cs プロジェクト: porglezomp/LD33
    IEnumerator AttackPlayer()
    {
        Debug.Log(gameObject + " decides to attack");
        int         targetX = -1, targetY = -1;
        IEnumerator path = null;

        while (aware)
        {
            if (path == null || targetX != Mathf.Round(player.transform.position.x) || targetY != Mathf.Round(player.transform.position.y))
            {
                Interrupt(path);
                targetX = (int)Mathf.Round(player.transform.position.x);
                targetY = (int)Mathf.Round(player.transform.position.y);
                path    = WalkPathToPoint(player.transform.position);
            }
            if (Vector3.Distance(transform.position, player.transform.position) < 0.75)
            {
                Debug.Log(Vector3.Distance(transform.position, player.transform.position));
                Pints.AddPints(-2f * Time.deltaTime);
            }
            yield return(path.MoveNext());
        }
        interrupt = true;
    }
コード例 #4
0
    public void InitWithMap(string filename)
    {
        Pints.Init();
        StartCoroutine(Pints.PintsDecay());
        RenderSettings.ambientLight = Color.black;

        var grid = new List <List <Tile> >();
        int x = 0, y = 0;
        var file = Resources.Load(filename) as TextAsset;

        foreach (var line in file.text.Split('\n'))
        {
            x = 0;
            var row = new List <Tile>();
            grid.Add(row);
            foreach (var character in line)
            {
                var        tile = Tile.EmptyTile;
                GameObject obj;
                switch (character)
                {
                case '#':
                    CreateObject(wallObject, x, y).tag = "Map Tile";
                    tile = Tile.WallTile;
                    break;

                case '!':
                    CreateObject(playerObject, x, y);
                    CreateFloor(x, y);
                    break;

                case '?':
                    CreateObject(coffinObject, x, y).tag = "Map Tile";
                    CreateFloor(x, y).tag = "Map Tile";
                    tile = Tile.WallTile;
                    break;

                case 'E':
                    CreateObject(enemyObject, x, y);
                    CreateFloor(x, y).tag = "Map Tile";
                    break;

                case '+':
                    CreateObject(crossObject, x, y).tag = "Map Tile";
                    CreateFloor(x, y).tag = "Map Tile";
                    tile = Tile.WallTile;
                    break;

                case 'T':
                    obj     = CreateObject(torchObject, x, y);
                    obj.tag = "Map Tile";
                    ObjectRegistry.instance.RegisterObjectForKey(obj, "Light");
                    CreateFloor(x, y).tag = "Map Tile";
                    break;

                case 'L':
                    obj = CreateObject(torchObject, x, y);
                    obj.transform.Rotate(Vector3.back, 90);
                    obj.tag = "Map Tile";
                    ObjectRegistry.instance.RegisterObjectForKey(obj, "Light");
                    CreateFloor(x, y).tag = "Map Tile";
                    break;

                case 'W':
                    obj     = CreateObject(stakesObject, x, y);
                    obj.tag = "Map Tile";
                    ObjectRegistry.instance.RegisterObjectForKey(obj, "Weapon");
                    CreateFloor(x, y).tag = "Map Tile";
                    break;

                case '_':
                    tile = Tile.WallTile;
                    break;

                default:
                    CreateFloor(x, y).tag = "Map Tile";
                    break;
                }
                row.Add(tile);
                x++;
            }
            y++;
        }
        map = new Tile[grid[0].Count, grid.Count];

        for (int i = 0; i < map.GetLength(0); i++)
        {
            for (int j = 0; j < map.GetLength(1); j++)
            {
                map[i, j] = grid[j][i];
            }
        }
        PathFinder.Init(map);
    }