Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using UnityEngine;
- using System.Collections;
- using System.Collections.Generic;
- public class TurretController : MonoBehaviour
- {
- private RaycastHit hit;
- private Transform target, turret;
- public Transform barrel_tip;
- private Vector3 direct;
- public float Speed = 2.0f, range = 30.0f;
- List<Collider> enemy_list;
- private Animator anim;
- Quaternion rot;
- void Start()
- {
- enemy_list = new List<Collider>();
- turret = transform.GetChild(0);
- //barrel_tip = transform.GetChild(1);
- anim = turret.GetComponent<Animator>();
- }
- // Update is called once per frame
- void Update()
- {
- Collider[] colliders = Physics.OverlapSphere(transform.position, 30);
- for (int i = 0; i < colliders.Length; i++)
- {
- if (colliders[i].tag == "Enemy")
- {
- enemy_list.Add(colliders[i]);
- }
- }
- if (enemy_list != null)
- {
- foreach (Collider enemy in enemy_list)
- {
- RotateTurret(enemy);
- Debug.DrawLine(barrel_tip.position, barrel_tip.position + (barrel_tip.forward * range), Color.red);
- if (Physics.Raycast(barrel_tip.position, barrel_tip.transform.forward, out hit, 50))
- {
- Debug.Log(hit.distance);
- if (hit.distance < range)
- {
- print("Target in range.");
- anim.SetBool("enemy_det", true);
- }
- }
- }
- }
- else
- print("Error: enemy_list is NULL.");
- }
- void RotateTurret(Collider col)
- {
- target = col.transform;
- direct = target.position - transform.position;
- direct.y = 0;
- rot = Quaternion.LookRotation(direct);
- transform.rotation = Quaternion.Slerp(transform.rotation, rot, Time.deltaTime * Speed);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement