示例#1
0
    private void GenerateMapChunk()
    {
        int width  = (int)mapSize.x;
        int height = (int)mapSize.y;
        MapChunkGenerator generator = new MapChunkGenerator();

        currentChunk = generator.generateInitial(width, height);
    }
示例#2
0
    public override void OnInspectorGUI()
    {
        MapChunkGenerator chunkGen = (MapChunkGenerator)target;

        if (DrawDefaultInspector())
        {
            if (chunkGen.autoUpdate)
            {
                chunkGen.GenerateChunk();
            }
        }

        if (GUILayout.Button("Generate"))
        {
            chunkGen.GenerateChunk();
        }
        if (GUILayout.Button("Clear"))
        {
            chunkGen.ClearChunk();
        }
    }
示例#3
0
    public void FixedUpdate()
    {
        int               width         = (int)mapSize.x;
        int               height        = (int)mapSize.y;
        int               nbToCopy      = 5;
        Rigidbody2D       rb            = player.GetComponent <Rigidbody2D>();
        Vector3           localVelocity = player.transform.InverseTransformDirection(rb.velocity);
        MapChunkGenerator generator     = new MapChunkGenerator();

        // Debug.Log("x : " + localVelocity.x + " y : " + localVelocity.y);
        // Debug.Log("x/y : " + player.transform.position.x + "/" + player.transform.position.y);

        float borderTop    = mapSize.y / 2;
        float borderBottom = -borderTop;
        float borderRight  = mapSize.x / 2;
        float borderLeft   = -borderRight;

        if (player.transform.position.y > borderTop && localVelocity.y > 0)
        {
            currentChunk = generator.generateTopOf(
                currentChunk,
                currentChunk.getPositionX(),
                currentChunk.getPositionY() - 1,
                width,
                height,
                nbToCopy
                );
            FulfilTileMap();

            Vector2 newPosition = new Vector2(player.transform.position.x, borderBottom);
            player.transform.position = newPosition;
        }
        else if (player.transform.position.y < borderBottom && localVelocity.y < 0)
        {
            currentChunk = generator.generateBottomOf(
                currentChunk,
                currentChunk.getPositionX(),
                currentChunk.getPositionY() + 1,
                width,
                height,
                nbToCopy
                );
            FulfilTileMap();

            Vector2 newPosition = new Vector2(player.transform.position.x, borderTop);
            player.transform.position = newPosition;
        }
        else if (player.transform.position.x < borderLeft && localVelocity.x < 0)
        {
            currentChunk = generator.generateLeftOf(
                currentChunk,
                currentChunk.getPositionX() - 1,
                currentChunk.getPositionY(),
                width,
                height,
                nbToCopy
                );
            FulfilTileMap();

            Vector2 newPosition = new Vector2(borderRight, player.transform.position.y);
            player.transform.position = newPosition;
        }
        else if (player.transform.position.x > borderRight && localVelocity.x > 0)
        {
            currentChunk = generator.generateRightOf(
                currentChunk,
                currentChunk.getPositionX() + 1,
                currentChunk.getPositionY(),
                width,
                height,
                nbToCopy
                );
            FulfilTileMap();

            Vector2 newPosition = new Vector2(borderLeft, player.transform.position.y);
            player.transform.position = newPosition;
        }
    }