Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using UnityEngine;
- using System.Collections;
- public class AI : MonoBehaviour {
- private Transform mainUFO;
- public GameObject laserBeam;
- public float turnSpeed = 5f;
- public float shootingForce = 20000f;
- public float hookDistance = 5f;
- public bool inDelay;
- public float speed = 10f;
- RaycastHit hit;
- Rigidbody rb;
- AudioSource audioSource;
- void Start()
- {
- mainUFO = GameObject.FindGameObjectWithTag("mainUFO").transform;
- audioSource = GetComponent<AudioSource>();
- inDelay = false;
- }
- void FixedUpdate ()
- {
- float maxDistance = Vector3.Distance(mainUFO.transform.position, transform.position);
- if (!inDelay)
- {
- Quaternion targetRotation = Quaternion.LookRotation(mainUFO.transform.position - transform.position);
- transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, turnSpeed * Time.fixedDeltaTime);
- if (maxDistance >= 30)
- {
- transform.position = Vector3.MoveTowards(transform.position, mainUFO.transform.position, Time.fixedDeltaTime * speed);
- }
- }
- if (Vector3.Angle(transform.forward, mainUFO.transform.position - transform.position) < hookDistance)
- {
- if (!inDelay)
- {
- StartCoroutine(shootingDelay());
- }
- }
- }
- IEnumerator shootingDelay ()
- {
- inDelay = true;
- yield return new WaitForSeconds(1);
- Transform shootingStart = gameObject.transform.GetChild(1);
- GameObject newLaserBeam = Instantiate(laserBeam, new Vector3(shootingStart.transform.position.x, shootingStart.transform.position.y, shootingStart.transform.position.z), shootingStart.transform.rotation) as GameObject;
- rb = newLaserBeam.GetComponent<Rigidbody>();
- rb.AddForce(transform.forward * shootingForce);
- audioSource.Play();
- if (Vector3.Angle(transform.forward, mainUFO.transform.position - transform.position) < hookDistance)
- {
- print("hit!");
- }
- yield return new WaitForSeconds(1);
- inDelay = false;
- Object.Destroy(newLaserBeam);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment