MathHelper.Lerp Самонаводящаяся ракета

Мне нужна была помощь в создании самонаводящейся ракеты, которая летела бы к цели. Мне дали информацию, и я смог это сделать, но я изучал MathHelper.Lerp, который мне было приказано попробовать и использовать на посту, так и не нашли надежного способа повернуть направление ракеты.

    protected override void Update(GameTime gameTime)
    {
        mouse = Mouse.GetState();
        mousePosition = new Vector2(mouse.X, mouse.Y);

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

        direction = mousePosition - missilePosition;
        direction.Normalize();
        missilePosition += direction * delta;

        d.X = mouse.X - missilePosition.X;
        d.Y = mouse.Y - missilePosition.Y;

        distance = Math.Sqrt((d.X * d.X) + (d.Y * d.Y));

        v.X += d.X * turning;
        v.X += d.X * turning;

        Velocity = Math.Sqrt((v.X * v.X) + (v.Y * v.Y));

Как бы я использовал lerp для поворота направления, чтобы ракета поворачивалась медленно?


person Ryan Foy    schedule 15.04.2014    source источник


Ответы (1)


Попробуйте что-то вроде этого при расчете направления, в котором вы хотите, чтобы ваша ракета направилась:

Vector2 direction = Vector2.Lerp(mousePosition, missilePosition, 0.5f);

Это позволит получить направление, которое составляет 50% в направлении, которое вы хотите.

person jgallant    schedule 15.04.2014