Как сделать отдачу при выстреле 2D? Я хочу сделать так чтоб игрок стрелял допустим к себе под ноги и его откидывало вверх, если стреляет вправо, то его откидывает назад , тобишь влево
Смотря как стрельба сделана.
А так например по “unity 2d recoil” гуглится много материалов.
Тут выстрел это условно, мне надо чтобы при нажатии на левую кнопку мыши меня отталкивало назад
Так это ж то же самое, что и любое передвижение объектов программно.
Например Unity - Scripting API: Vector2.MoveTowards
Используйте Rigidbody2D в режиме Dynamic. И при выстреле применяйте силу в нужном направлении.
public class PlayerShooting : MonoBehaviour
{
public Rigidbody2D rb;
public float recoilForce = 10f; // Сила отдачи
private void Awake()
{
rb = GetComponent<Rigidbody2D>();
}
public void Shoot()
{
// Определите направление отдачи в зависимости от направления выстрела игрока
Vector2 recoilDirection = CalculateRecoilDirection();
// Примените силу отдачи к Rigidbody2D объекта игрока
rb.AddForce(recoilDirection * recoilForce, ForceMode2D.Impulse);
}
private Vector2 CalculateRecoilDirection()
{
// Определите направление отдачи в зависимости от направления выстрела игрока
// Получите направление выстрела игрока
Vector2 shootDirection = GetShootDirection();
// Определите направление отдачи, инвертируя направление выстрела
Vector2 recoilDirection = -shootDirection;
return recoilDirection;
}
private Vector2 GetShootDirection()
{
// Возвращает направление выстрела в зависимости от ввода игрока (направление стрельбы)
// Пример: возвращение вектора направления относительно положения мыши
Vector2 mousePosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);
Vector2 playerPosition = transform.position;
Vector2 shootDirection = (mousePosition - playerPosition).normalized;
return shootDirection;
}
}
Спасибо, скрипт рабочий