У меня есть Vector3, который указывает силу воздействия игрока на мяч.
Vector3(moveHorizontally, 0.0f, moveVertically);
У меня есть еще один Vector3, который указывает нормализованное направление плоскости.
Vector3(-1.0f, 0.0f, 0.0f);
Как я могу заставить мяч следовать за объектом, используя Добавитьсилу()? В этом случае я думаю, что мяч должен идти влево, а не вперед, если я не ошибаюсь.
Обновлено: мне не нужно перемещать мяч вперед в определенном направлении. Каждый раз, когда мяч запускает самолет, направление плоскости становится направлением мяча. Это игра, в которой мяч катится по нелинейной дорожке с поворотами.
Просто запустите его с помощью коллайдера, прочитайте направление плоскости и передайте направление как параметр в AddForce.





Я бы использовал нетAddForce, так как я предполагаю, что вы хотите сразу же изменить направление при столкновении.
Я думаю, что вы имеете в виду что-то вроде
private rigidBody;
private void Awake()
{
rigidBody = GetComponent<RigidBody>();
}
private void OnCollisionEnter(Collision col)
{
// Or however you want to check with what you are colliding
if (col.gameObject.tag != "Plane") return;
var hitPlane = col.gameObject;
var invertedPlaneNormal = hitPlane.transform.forward.normalized * -1;
var currentSpeed = rigidBody.velocity.magnitude;
// Keep same velocity but change direction immediately
rigidBody.velocity = invertedPlaneNormal * currentSpeed;
}
вы также можете добавить демпфирование, например
[Range(0,1)]
public float dampFactor;
//...
rigidBody.velocity = invertedPlaneNormal * currentSpeed * (1 - dampFactor);
У меня нет конкретного кода, но если предположить, что к мячу прикреплено твердое тело, и как у пути, так и у мяча есть коллайдеры, вы можете использовать события столкновения Unity, чтобы определить будущее направление мяча.
Допустим, к мячу прикреплен сценарий, и когда он сталкивается, он вызывает событие onCollisionEnter, затем оттуда вы можете получить компонент сценария плоскости, с которой он столкнулся, и применить силу в правильном направлении в ответ на столкновение.
Обратите внимание, что onCollisionEnter происходит только тогда, когда объект входит в коллизию.
Пожалуйста, не размещайте дополнительную информацию в качестве ответов. Если вы хотите дополнить свой вопрос дополнительной информацией, редактировать вместо этого добавьте туда свою информацию.
Вам придется объяснить и показать больше вашего окружения. Можете ли вы сделать минимальный воспроизводимый пример части, которая реализует движение мяча и плоскость? Тогда мы могли бы предложить, как реализовать желаемый эффект.