Тректория движения пули в 2D

Есть такое решение для стрельбы как в enter the gungeon(пулька летит в сторону курсора мышки):

            if (mouseState.LeftButton.Equals(ButtonState.Pressed) && oldMouseState.LeftButton.Equals(ButtonState.Released))
            {
                Vector2 destinantion = mouseState.Position.ToVector2() - position;
                Vector2 speed = new Vector2(3, 3 * destinantion.Y / destinantion.X);
                speed.Normalize();
                //float x = 3 * (float)Math.Sqrt(destinantion.X * destinantion.X + destinantion.Y * destinantion.Y) / destinantion.Y;
                bullets.Add(new Bullet(bulletTexture, position, speed * 6));
            }

destination - расстояние от курсора мышки от игрока
speed - через тангенс высчитываю куда сдвигать пульку каждый тик
Дальше это все нормализуется и добавляется в пульку. Но работает все это пока destination не отрицательный, если мышка по координатам левее игрока пульки летят в противоположную сторону(там все равно положительное число выходит).
Есть ли более красивое решение такого или можно ли как-то пофиксить это сейчас?


Ответы (0 шт):