У меня есть два шара (A и B) в моей сцене, у них есть некоторые движения во время игры. Я хочу связать их с помощью цилиндра, поэтому верхняя часть цилиндра должна прилипать к шару А, а нижняя должна прилипать к шару В. И когда шарики движутся, цилиндр должен двигаться и масштабироваться вверх и вниз в зависимости от расстояния между шариками. Так что это дает упругий эффект.
Я сделал нижеприведенный сценарий, и он работает, но единственная проблема, которая у меня возникает, заключается в том, что, когда мяч движется быстрее, цилиндр не следует за ним с той же скоростью, поэтому мяч достигает нескольких пунктов назначения, а затем цилиндра через несколько кадров. .
Сценарий цилиндра:
public Transform ball1;
public Transform ball2;
Vector3 scale0;
Vector3 scale;
void Start()
{
scale0 = transform.localScale;
}
void Update()
{
var pA = ball1.position;
var pB = ball2.position;
transform.position = (pA + pB) / 2;
transform.LookAt(pB);
scale = scale0;
scale.z = scale0.z * Vector3.Distance(pA, pB) * 2;
transform.localScale = scale;
}
Ball A Скрипт:
GameObject ActualBase;
GameObject NextBase;
float Speed = 20;
void Update () {
if (Input.GetMouseButtonDown(0))
{
StopAllCoroutines();
StartCoroutine(Move());
}
}
public IEnumerator MoveCylinder()
{
Vector3 Ball1Destination = new Vector3(NextBase.transform.position.x, transform.position.y, NextBase.transform.position.z);
while (Vector3.Distance(transform.localPosition, Ball1Destination) > 0)
{
float currentMovementTime = Time.deltaTime;
transform.position = Vector3.MoveTowards(transform.position, Ball1Destination, currentMovementTime * Speed);
yield return null;
}
}