Advertisement
jamieTheCoder

ShootingLineRendererDriver

Oct 9th, 2022
46
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.13 KB | Gaming | 0 0
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using DG.Tweening;
  4. using MoreMountains.Tools;
  5. using UnityEngine;
  6.  
  7. namespace JamiesCode.Scripts.AI {
  8.  
  9.     public class ShootingLineRendererDriver : MonoBehaviour {
  10.         /// <summary>
  11.         /// this needs some work like most things
  12.         /// but its part way there I need to firm up the logic
  13.         ///
  14.         /// </summary>
  15.         [SerializeField] LineRenderer lr;
  16.         [SerializeField] GameObject playerObj;
  17.         [SerializeField] GameObject GunLaserStart;
  18.         [SerializeField] FieldOfView fov;
  19.         [SerializeField] float UpdateInterval;
  20.         [MMReadOnly][SerializeField]Vector3 lastPlayerPos;
  21.         Vector3 currentPlayerPos;
  22.         [MMReadOnly][SerializeField] bool tween = false;
  23.         //[MMReadOnly]
  24.         public bool runScript;
  25.  
  26.         void Start () {
  27.             lr = GetComponent<LineRenderer> ();
  28.             Invoke ("GetPlayerReference", 2.1f);
  29.             savePlayerPos ();
  30.         }
  31.  
  32.         // Update is called once per frame
  33.         void Update () {
  34.             if (runScript) {
  35.                 if (playerObj != null) {
  36.                     // Tween customVector to CurrentPlayerPos in UpdateInterval seconds
  37.                     if (tween) {
  38.                         Tween ();
  39.                     }
  40.                     formatPositions ();
  41.                     UpdateLineRenderer ();
  42.                 }
  43.             } else {
  44.                 return;
  45.             }
  46.         }
  47.  
  48.         private void savePlayerPos () {
  49.             lastPlayerPos = currentPlayerPos;
  50.             tween = true;
  51.         }
  52.  
  53.         private void UpdateLineRenderer () {
  54.             lr.SetPosition (0, lastPlayerPos);
  55.             lr.SetPosition (1, GunLaserStart.transform.position);
  56.         }
  57.  
  58.         private void formatPositions () {
  59.             currentPlayerPos = playerObj.transform.position;
  60.             lastPlayerPos = new Vector3 (lastPlayerPos.x, lastPlayerPos.y, 0f);
  61.         }
  62.         private void Tween()
  63.         {
  64.         Debug.Log("Line should tween");
  65.         DOTween.To(() => lastPlayerPos, x => lastPlayerPos = x, currentPlayerPos, UpdateInterval).OnUpdate(() => { }).onComplete = savePlayerPos;
  66.         tween = false;
  67.         }
  68.         //this just gets the player you can ignore it if debugging.
  69.         private void GetPlayerReference () {
  70.             playerObj = fov.playerRef;
  71.         }
  72.         //Methods below aren't necesarry but are QOL(Quality Of Life)
  73.         public void StartScript () {
  74.             runScript = true;
  75.         }
  76.         public void StopScript () {
  77.             runScript = false;
  78.         }
  79.     }
  80. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement