Переместить объект с текущей позиции в другую в 2D

Суть такова: У меня есть скрипт который по нажатию кнопки UI воспроизводит анимацию рывка персонажа но только на том месте где он находится. Я начал писать код чтобы задать ему скорость и направление движения по нажатию на эту же кнопку но понял что не знаю как это правильно реализовать. Нужна ваша помощь! пробовал использовать lerp но не вышло

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class Attack1 : MonoBehaviour
{
    private Animator anim;
        
    public void Attack() // во время этой анимации персонаж должен переместиться с текущей его позиции 
    {
        anim = GetComponent<Animator>();
        anim.SetTrigger("Attack"); 
    }

}


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

Автор решения: KengiTakery

Если нужно переместить 3d объект, то нужно можно использовать Lerp через Button.onClick. А в случае с 2d тоже через Button.onClick но Rigidbody2d либо velocity, либо AddForce.

Делаешь скрипт, добавляешь ивент на кнопку, туда кидаешь скрипт. введите сюда описание изображения

Вот пример Lerp:

    [SerializeField] private float speed = 10f;

    void Update()
    {
       Vector3.Lerp(Transform.position("наша позиция"),"Укажи координаты куда переместится здесь",(speed*Time.deltaTime))
       
    }
    

   

должно сработать, если нужно для 2d, то это как то так:

     [SerializeField] private float Speed = 100f;
    private Rigidbody2D body;

    private void Awake()
    {
        body = GetComponent<Rigidbody2D>();

    }

    void Update()
    {
         
         body.AddForce(new Vector2(speed, body.velocity.y));
         //или body.velocity = new Vector2(speed, body.velocity.y);
       
    }

Вроде должно сработать

→ Ссылка