Advertisement
Guest User

TurretController Script Raycast problem

a guest
Oct 21st, 2015
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.98 KB | None | 0 0
  1. using UnityEngine;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4.  
  5.  
  6. public class TurretController : MonoBehaviour
  7. {
  8.     private RaycastHit hit;
  9.     private Transform target, turret;
  10.     public Transform barrel_tip;
  11.     private Vector3 direct;
  12.     public float Speed = 2.0f, range = 30.0f;
  13.     List<Collider> enemy_list;
  14.     private Animator anim;
  15.     Quaternion rot;
  16.    
  17.     void Start()
  18.     {
  19.         enemy_list = new List<Collider>();
  20.         turret = transform.GetChild(0);
  21.         //barrel_tip = transform.GetChild(1);
  22.         anim = turret.GetComponent<Animator>();
  23.  
  24.     }
  25.     // Update is called once per frame
  26.     void Update()
  27.     {
  28.  
  29.         Collider[] colliders = Physics.OverlapSphere(transform.position, 30);
  30.         for (int i = 0; i < colliders.Length; i++)
  31.         {
  32.             if (colliders[i].tag == "Enemy")
  33.             {
  34.                 enemy_list.Add(colliders[i]);
  35.             }
  36.         }
  37.  
  38.         if (enemy_list != null)
  39.         {
  40.             foreach (Collider enemy in enemy_list)
  41.             {
  42.                 RotateTurret(enemy);
  43.                 Debug.DrawLine(barrel_tip.position, barrel_tip.position + (barrel_tip.forward * range), Color.red);
  44.                 if (Physics.Raycast(barrel_tip.position, barrel_tip.transform.forward, out hit, 50))
  45.                 {
  46.                     Debug.Log(hit.distance);    
  47.                     if (hit.distance < range)
  48.                     {
  49.                         print("Target in range.");
  50.                         anim.SetBool("enemy_det", true);
  51.                     }
  52.                 }
  53.             }
  54.         }
  55.         else
  56.             print("Error: enemy_list is NULL.");
  57.     }
  58.  
  59.     void RotateTurret(Collider col)
  60.     {
  61.         target = col.transform;
  62.         direct = target.position - transform.position;
  63.         direct.y = 0;
  64.         rot = Quaternion.LookRotation(direct);
  65.         transform.rotation = Quaternion.Slerp(transform.rotation, rot, Time.deltaTime * Speed);
  66.     }
  67. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement