示例#1
0
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.R))
        {
            Die();
        }
        h    = Input.GetAxis("Horizontal");
        jump = Input.GetButton("Jump");
        if (Input.GetButtonUp("Jump"))
        {
            jumping = false;
        }

        // Check for spikes
        TileMapController.TileInfo tile = map.GetTileAtPosition(new Vector2(transform.position.x, transform.position.y) + gameObject.GetComponent <Rigidbody2D>().velocity.normalized, TileMapController.TileLayer.Spike);
        Debug.DrawLine(transform.position, tile.worldPos, Color.red);
        if (tile.type == TileMapController.TileType.Spike)
        {
            Vector2 v    = gameObject.GetComponent <Rigidbody2D> ().velocity;
            float   maxV = 1f;
            float   knockBackStrength = 30f;
            switch (tile.direction)
            {
            case TileMapController.TileDirection.Up:
                if (v.y < -maxV)
                {
                    TakeDamage(1);
                    KnockBack(new Vector2(v.x * 0.1f, knockBackStrength));
                }
                break;

            case TileMapController.TileDirection.Down:
                if (v.y > maxV)
                {
                    TakeDamage(1);
                    KnockBack(new Vector2(v.x * 0.1f, -knockBackStrength));
                }
                break;

            case TileMapController.TileDirection.Right:
                if (v.x < -maxV)
                {
                    TakeDamage(1);
                    KnockBack(new Vector2(knockBackStrength, v.y * 0.1f));
                }
                break;

            case TileMapController.TileDirection.Left:
                if (v.x > maxV)
                {
                    TakeDamage(1);
                    KnockBack(new Vector2(-knockBackStrength, v.y * 0.1f));
                }
                break;
            }
        }
    }
    void Start()
    {
        holder = transform.Find("Holder").gameObject;
//		plate = transform.Find ("Plate").gameObject;
        rock          = transform.Find("Rock").gameObject;
        mapController = GameObject.Find("TileMap").GetComponent <TileMapController>();
        int  minHeightCheck = 4;
        int  maxHeightCheck = 64;
        bool madeTrap       = false;

//		for (int y = Mathf.RoundToInt(transform.position.y) + minHeightCheck; y < Mathf.RoundToInt(transform.position.y) + maxHeightCheck; y++) {
//			TileMapController.TileInfo tile = mapController.GetTileAtPosition (transform.position);
//			if (tile.type == TileMapController.TileType.Empty) {
//				madeTrap = true;
//				SetTopOffset (y - Mathf.RoundToInt(transform.position.y));
//				break;
//			}
//		}
        for (int y = 1; y < maxHeightCheck; y++)
        {
            Vector2 checkPos = gameObject.transform.position;
            checkPos.y += y;
            TileMapController.TileInfo tile = mapController.GetTileAtPosition(checkPos, TileMapController.TileLayer.Floor);
            if (y <= minHeightCheck)
            {
                if (tile.type == TileMapController.TileType.Empty)
                {
                    continue;
                }
                else
                {
                    break;
                }
            }
            else if (y <= maxHeightCheck)
            {
                if (tile.type == TileMapController.TileType.Wall)
                {
                    madeTrap = true;
                    SetTopOffset(y);
                    break;
                }
            }
        }
        if (!madeTrap)
        {
            print("Trap not made");
            Destroy(gameObject);
        }
        else
        {
            print("Trap made");
        }
    }
示例#3
0
 public override void UseAtPosition(Vector2 position)
 {
     for (float x = position.x - slimeRadius; x <= position.x + slimeRadius; x++)
     {
         for (float y = position.y - slimeRadius; y <= position.y + slimeRadius; y++)
         {
             TileMapController.TileInfo tile = controller.GetTileAtPosition(new Vector2(x, y), TileMapController.TileLayer.Floor);
             if (tile.type == TileMapController.TileType.Wall)
             {
                 controller.CreateSlimeAt(new Coordinates(Mathf.RoundToInt(x + Utils.Utils.mapSize.x / 2), Mathf.RoundToInt(y + Utils.Utils.mapSize.y / 2)));
             }
         }
     }
     controller.Build();
 }