Advertisement
KRecordZ

LookAtObject Unity

Apr 9th, 2020
185
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.58 KB | None | 0 0
  1. using UnityEngine;
  2.  
  3.  public class LaserLook : MonoBehaviour
  4.  {
  5.      public float rotationDamping;
  6.      public float objectDistance;
  7.      public GameObject[] target;
  8.  
  9.      GameObject FindClosestAsteroid()
  10.      {
  11.          target = GameObject.FindGameObjectsWithTag("Asteroid");
  12.          GameObject closestTarget = null;
  13.          var distance = Mathf.Infinity;
  14.          var position = transform.position;
  15.          foreach (GameObject go in target)
  16.          {
  17.              Vector3 distanceDiff = go.transform.position - position;
  18.              float curDistance = distanceDiff.sqrMagnitude;
  19.              if (curDistance < distance)
  20.              {
  21.                  closestTarget = go;
  22.                  distance = curDistance;
  23.              }
  24.          }
  25.          return closestTarget;
  26.      }
  27.  
  28.      void Update()
  29.      {
  30.          var distanceFromTarget = Vector3.Distance(transform.position, FindClosestAsteroid().transform.position);
  31.          if (objectDistance > distanceFromTarget)
  32.          {
  33.              RotateLaser();
  34.          }
  35.          else {
  36.              RotateLaserDefault();   //Reset Laser position to zero
  37.          }
  38.      }
  39.  
  40.      void RotateLaser()
  41.      {
  42.              Quaternion rotation = Quaternion.LookRotation(FindClosestAsteroid().transform.position - transform.position);
  43.              transform.rotation = Quaternion.Slerp(transform.rotation, rotation, Time.deltaTime * rotationDamping);
  44.      }
  45.      void RotateLaserDefault() {
  46.          transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.identity, Time.deltaTime * rotationDamping);
  47.      }
  48.  }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement