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"); } }
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(); }