private void MoveForward(Sprite sprite) { var x = 0f; var y = 0f; switch (_currentDirection) { case Direction.Up: y = -1*_speed; break; case Direction.Down: y = _speed; break; case Direction.Left: x = -1*_speed; break; case Direction.Right: x = _speed; break; default: return; } if (_currentState == BoomerangState.Forward) { var collision = GetComponent<Collision>(ComponentType.Collision); if(collision != null && collision.CheckCollisionWithTiles(new Rectangle((int) (sprite.Position.X + x), (int) (sprite.Position.Y + y),sprite.Width,sprite.Height))) { _currentState = BoomerangState.Back; _counter = 0; } else { sprite.Move(x,y); } } }
private void MoveBack(Sprite sprite) { var ownerSprite = Owner.GetComponent<Sprite>(ComponentType.Sprite); if(ownerSprite == null) { _currentState = BoomerangState.Stop; Active = false; } if(ManagerFunction.Distance(sprite.Position,ownerSprite.Position) < 2) { _currentState = BoomerangState.Stop; Active = false; return; } if(ownerSprite.Position.X < sprite.Position.X) sprite.Move(-1*_speed,0); if (ownerSprite.Position.X > sprite.Position.X) sprite.Move(_speed, 0); if (ownerSprite.Position.Y < sprite.Position.Y) sprite.Move(0, -1*_speed); if (ownerSprite.Position.Y > sprite.Position.Y) sprite.Move(0, _speed); }