Ракетное вращение изображения и направления C#

Я возился с MathHelp.Lerp(); пытаясь найти самый простой способ изменить направление движения ракеты. Прямо сейчас он мгновенно пойдет в том направлении, в котором находится игрок/мышь.

Будет ли лучше всего использовать ларп, или я должен использовать какой-то другой тип вращения направления? Последнее сообщение, пример того, что я имею в виду.

    protected override void Update(GameTime gameTime)
    {
        // Allows the game to exit
        if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
            this.Exit();

        delta = (float)gameTime.ElapsedGameTime.TotalSeconds * Speed;

        direction = mousePosition - missilePosition;
        direction.Normalize();

        missilePosition += direction * delta;

        //missilePosition = Vector2.Lerp(missilePosition, mousePosition, 2.0f);

        mouse = Mouse.GetState();

        mousePosition = new Vector2(mouse.X, mouse.Y);

        base.Update(gameTime);
    }

Вращение изображения в направлении ракеты — это то, что я искал и пытался понять. Как мне заставить изображение вращаться по мере вращения направления?


person Ryan Foy    schedule 28.03.2014    source источник
comment
Я только что нашел кое-что, что я могу использовать здесь Я все еще читаю его, но, возможно, смогу ответить на него отсюда...   -  person Ryan Foy    schedule 28.03.2014
comment
Я бы сделал что-то вроде этого: вычислить угол между целью и ракетой, иметь предопределенный maximumturnangle, и если угол поворота больше, чем maximumturnangle, повернуть ракету на столько градусов. Если угол меньше, чем maximumturnangle, то поверните ракету на необходимую величину.   -  person davidsbro    schedule 28.03.2014
comment
Спасибо, я попробую.   -  person Ryan Foy    schedule 29.03.2014


Ответы (1)


Если вы используете скорость для перемещения своей ракеты, вы можете использовать этот код (возможно, вам нужно будет его нормализовать). пишу с головы.

rotation = -(float)Math.Atan2(velocity.Y, velocity.X);

поэтому, если ваша скорость равна (1,0), это означает, что ваша ракета летит прямо слева направо. Atan2(1,0) даст вам 1,57 радианта (90 градусов). чтобы это работало, ваша текстура ракеты должна быть обращена лицом вверх. и этот код повернет его на 90 градусов вправо.

person Davor Mlinaric    schedule 28.03.2014
comment
Возможно, я смогу это сделать, я попробую это, откуда происходит вращение? - person Ryan Foy; 28.03.2014