сделал мортиру работающую только при определенных значениях по y, как можно улучшить код что бы он работал при других значениях y и прилетал в цель?
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class test : MonoBehaviour
{
Rigidbody2D body;
float distance;
public Transform targetCube;
void Start()
{
body = GetComponent<Rigidbody2D>();
distance = (targetCube.transform.position.x - gameObject.transform.position.x);
body.AddForce(new Vector3(distance/2, 10, 0), ForceMode2D.Impulse);
}
}
Ответы (1 шт):
Автор решения: gord1402
→ Ссылка
Решив уравнения можно получить формулы для force_x и force_y через время полёта. Если мы считаем что ускорение свободного падения 9.81, то получается следующий код:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class test : MonoBehaviour
{
Rigidbody2D body;
public Transform targetCube;
public float fly_time = 5;
void Start()
{
body = GetComponent<Rigidbody2D>();
Vector3 relative = targetCube.transform.position - gameObject.transform.position;
Vector2 force = new Vector2(relative.x / fly_time, (9.81f * fly_time / 2.0f) + relative.y / fly_time);
body.AddForce(new Vector3(force.x, force.y, 0), ForceMode2D.Impulse);
}
}
В результате траектория объекта на который добавлен скрипт будет пересекать targetCube через fly_time секунд.