Example #1
0
    public void Move(ref Vector2 velocity)
    {
        RaycastHit2D[]  hits   = new RaycastHit2D[10];
        ContactFilter2D filter = new ContactFilter2D()
        {
            layerMask = collisionMask
        };

        int numHits = collisionBox.Cast(velocity, filter, hits, velocity.magnitude);

        if (numHits > 0)
        {
            // Reset Velocity Vector
            velocity = Vector2.zero;

            // Check the cell we have collided with
            TileMetaData tileMeta = GetTileAttributesAtPoint(hits[0].point, 1);

            if (tileMeta.Action != "")
            {
                string action = tileMeta.Action;
                if (action.StartsWith("Teleport"))
                {
                    string[] aParts  = action.Split(';');
                    string   mapName = aParts[1];
                    float    playerX = (float)Convert.ToDouble(aParts[2]);
                    float    playerY = (float)Convert.ToDouble(aParts[3]);
                    mapController.ChangeMap(mapName, playerX, playerY);
                }
            }
        }

        transform.Translate(velocity);
        SpriteRenderer renderer = GetComponent <SpriteRenderer>();

        renderer.sortingOrder = (int)((mapController.CurrentMap.MapHeight - transform.position.y) * 100) + 100;
    }