Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using UnityEngine;
- public class LaserLook : MonoBehaviour
- {
- public float rotationDamping;
- public float objectDistance;
- public GameObject[] target;
- GameObject FindClosestAsteroid()
- {
- target = GameObject.FindGameObjectsWithTag("Asteroid");
- GameObject closestTarget = null;
- var distance = Mathf.Infinity;
- var position = transform.position;
- foreach (GameObject go in target)
- {
- Vector3 distanceDiff = go.transform.position - position;
- float curDistance = distanceDiff.sqrMagnitude;
- if (curDistance < distance)
- {
- closestTarget = go;
- distance = curDistance;
- }
- }
- return closestTarget;
- }
- void Update()
- {
- var distanceFromTarget = Vector3.Distance(transform.position, FindClosestAsteroid().transform.position);
- if (objectDistance > distanceFromTarget)
- {
- RotateLaser();
- }
- else {
- RotateLaserDefault(); //Reset Laser position to zero
- }
- }
- void RotateLaser()
- {
- Quaternion rotation = Quaternion.LookRotation(FindClosestAsteroid().transform.position - transform.position);
- transform.rotation = Quaternion.Slerp(transform.rotation, rotation, Time.deltaTime * rotationDamping);
- }
- void RotateLaserDefault() {
- transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.identity, Time.deltaTime * rotationDamping);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement