Этого можно добиться, изменив родителя зеленой сферы на целевой объект при столкновении.Тогда зеленая сфера будет прикреплена к цели, и она может двигаться вместе со своим родителем (он же целевой объект).Вот сценарий для этого:
public GameObject Target;
public GameObject GreenSphere;
void Start () {
}
void Update () {
}
void OnCollisionEnter(Collision collision)
{
//Since you used Target as a public variable
if(collision.gameObject == Target)
{
GreenSphere.transform.parent = Target.transform;
}
}
Поскольку операционная система не хочет изменять родительский объект, другой подход может вычислять расстояние между сферами, и как только расстояние равно target radius/ 2 + GreenSphere radius/2
, это означает, что объектыкасаясь друг друга, и тогда их можно считать прикрепленными! .Вот сценарий для него:
public GameObject target;
float targetSize;
float GreenObjSize;
void Start () {
targetSize = target.transform.localScale.y / 2;
GreenObjSize = gameObject.transform.localScale.y / 2;
Debug.Log(targetSize);
}
void Update () {
if((target.transform.position - gameObject.transform.position).magnitude > (targetSize + GreenObjSize))
{
gameObject.transform.position += Vector3.down * Time.deltaTime;
}
}
Этот сценарий должен быть присоединен к GreenSphere
и будет работать, только если объекты являются сферами!