Не могу понять, как применить OnColliderStay и OnColliderExit. Unity C#

Доброго времени суток.

Делаю игру для диплома по книжке Unity и C# от Бонда. Тема программирования на C# в Unity очень интересна, поэтому выбрал её, как основу.

Игра, по сути, клон Angry Birds. Есть SphereCollider(ограничивает натяжение, подсвечивает область куда нужно клацать мышью, чтобы появился снаряд) в GameObject Slingshot(сама рогатка). Есть сам снаряд(projectile), который появляется при нажатии на ЛКМ. И есть LineRenderer, в созданом специально для всего этого дела GameObject ProjectileBorder, имитирующий резинку, которая натянута между двух "рук" рогатки.

Проблема в том, что когда я задаю точки привязки LineRenderer в последовательности ПРука, снаряд, ЛРука, то они прилипают к снаряду и тянутся за ним, когда он уже запущен. И т.к. снаряды клонируются при каждом нажатии ЛКМ, то в LineRenderer не задаётся точка для нового снаряда, а остаётся на старой. Подумал, что можно решить проблему с помощью Collider. Такой вопрос - как можно, с помощью OnColliderStay и OnColliderExit сделать следующий код:

Если projPref.projectile == null или не в коллайдере, то
(
    line.positionCount = 2;
    pointFirst = GameObject.FindGameObjectWithTag("RArmBorder").transform.position;
    pointFour = GameObject.FindGameObjectWithTag("LArmBorder").transform.position;
    line.SetPosition(0, pointFirst);
    line.SetPosition(1, pointFour);
)

Если projPref.projectile находится в коллайдере, то
(
    line.positionCount = 3;
    pointSecond = GameObject.FindGameObjectWithTag("ProjBorder").transform.position;
    pointThird = GameObject.FindGameObjectWithTag("ProjBorderS").transform.position;
    line.SetPosition(0, pointFirst);
    line.SetPosition(1, pointSecond);
    line.SetPosition(2, pointFour);
)

И будет ли он работать так, как задумано(сбрасывать старую точку привязки к снаряду и привязывать к только что созданному)? Спасибо. Если что-то не понятно в той тарабарщине, что я написал - прошу уточнить. Постараюсь дать развёрнутый ответ.

P.S.: Также заметил у себя другую проблему. Если задавать сразу 4 точки привязки для LineRenderer, то "резинка" исчезает по какой-то причине. Так и не нашёл в чём может быть проблема. Вдруг вы поможете?

Прикладываю код который есть сейчас:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
public class RubberLine : MonoBehaviour
{
    private LineRenderer line;
    private Vector3 pointFirst;
    private Vector3 pointSecond;
    private Vector3 pointThird; // Пока не используется.
    private Vector3 pointFour;
    public Slingshot projPref;
 
    void Awake()
    {
        line = GetComponent<LineRenderer>();
        projPref = GameObject.Find("Slingshot").GetComponent<Slingshot>();
    }
 
    void Update()
    {
        if (projPref.projectile == null)
        {
            line.positionCount = 2;
            pointFirst = GameObject.FindGameObjectWithTag("RArmBorder").transform.position;
            pointFour = GameObject.FindGameObjectWithTag("LArmBorder").transform.position;
            line.SetPosition(0, pointFirst);
            line.SetPosition(1, pointFour);
        }
            
 
        if (projPref.projectile != null)
        {
            line.positionCount = 3;
            pointSecond = GameObject.FindGameObjectWithTag("ProjBorder").transform.position;
            pointThird = GameObject.FindGameObjectWithTag("ProjBorderS").transform.position;
            line.SetPosition(0, pointFirst);
            line.SetPosition(1, pointSecond);
            line.SetPosition(2, pointFour);
        }
 
    }
 
}

Ответы (0 шт):