Как обнулить скорость в направлении другого обьекта? Есть обьекты 1 и 2. 1-двигается с какой то скоростью в направлении своего вектора скорости. Вектор как известно можно разложить на составляющие. Нужно сделать так, что бы обьект 1 не приближался к обьекту 2, то есть обнулить тот компонент вектора, что направлен в сторону обьекта 2(если он не направлен в противоположную сторону). Вопрос-Как?
Знаю только способ с кучей синусов, косинусов, но расчетов таких надо сделать очень много, поэтому важно быстродействие, может средствами Юнити(встроенные функции) можно как то решить?

21 Авг 2019 в 06:17
176 +1
0
Ответы
1

В Unity можно использовать встроенную функцию Vector3.Project для проекции одного вектора на другой. В вашем случае, вы можете найти проекцию вектора скорости обьекта 1 на вектор, направленный от обьекта 1 к обьекту 2, а затем вычесть эту проекцию из вектора скорости обьекта 1. Это обнулит скорость обьекта 1 в направлении обьекта 2.

Ниже пример кода на C#, который показывает, как это можно сделать в Unity:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ObjectMovement : MonoBehaviour
{
public Transform object2; // Ссылка на Transform обьекта 2
void Update()
{
Vector3 direction = object2.position - transform.position; // Находим направление от обьекта 1 к обьекту 2
Vector3 velocity = transform.forward * 5f; // Пример скорости обьекта 1
// Находим проекцию скорости обьекта 1 на направление к обьекту 2
Vector3 projection = Vector3.Project(velocity, direction);
// Обнуляем скорость в направлении обьекта 2
Vector3 newVelocity = velocity - projection;
// Применяем новую скорость к обьекту 1
transform.position += newVelocity * Time.deltaTime;
}
}

Этот код найдет проекцию скорости обьекта 1 на направление к обьекту 2 и затем вычтет ее из скорости обьекта 1, чтобы обнулить скорость в направлении обьекта 2.

20 Апр в 13:20
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 83 989 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир