Advertisement
Guest User

Untitled

a guest
Apr 25th, 2015
190
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.75 KB | None | 0 0
  1. using UnityEngine;
  2. using System.Collections;
  3.  
  4. public class TriggerDetectPlayer : MonoBehaviour {
  5.  
  6.  
  7.     float rotationSpeed = 180;
  8.     float movementSpeed = 1;
  9.     float meshRadius = 1;
  10.  
  11.     IEnumerator turnTowardsPlayer;
  12.     IEnumerator moveTowardsPlayer;
  13.  
  14.  
  15.     void OnTriggerEnter(Collider other)
  16.     {
  17.         if (other.tag.Equals ("Player")) {
  18.             float playerDistance = Vector3.Distance(other.transform.position, this.transform.position);
  19.             Debug.Log ("Encontrou o Player");
  20.  
  21.             //if(playerDistance >= 2f * meshRadius)
  22.             //{
  23.                 turnTowardsPlayer = TurnTowardsPlayer(other.transform);
  24.                 moveTowardsPlayer = MoveTowardsPlayer(other.transform);
  25.                 StartCoroutine(turnTowardsPlayer);
  26.                 StartCoroutine(moveTowardsPlayer);
  27.             //}
  28.         }
  29.     }
  30.  
  31.  
  32.     void OnTriggerExit(Collider other)
  33.     {
  34.         if (other.tag.Equals ("Player")) {
  35.             float playerDistance = Vector3.Distance(other.transform.position, this.transform.position);
  36.  
  37.             if(playerDistance >= 2f * meshRadius)
  38.             {
  39.                 StopCoroutine(turnTowardsPlayer);
  40.                 StopCoroutine(moveTowardsPlayer);
  41.             }
  42.         }
  43.     }
  44.  
  45.     IEnumerator TurnTowardsPlayer(Transform player)
  46.     {
  47.         while (true) {
  48.             Quaternion targetRotation = Quaternion.LookRotation(player.position - transform.position, Vector3.up);
  49.             targetRotation.x = 0;
  50.             targetRotation.z = 0;
  51.  
  52.             transform.rotation = Quaternion.RotateTowards(transform.rotation, targetRotation, 1);
  53.             yield return 0;
  54.         }
  55.     }
  56.  
  57.     IEnumerator MoveTowardsPlayer(Transform player)
  58.     {
  59.         while (true) {
  60.             Vector3 playerDirection = transform.position - player.position;
  61.             playerDirection.y = 0;
  62.             playerDirection = playerDirection.normalized;
  63.  
  64.             Vector3 deltaMovement = playerDirection * movementSpeed * Time.deltaTime;
  65.  
  66.             transform.position -= deltaMovement;
  67.  
  68.             yield return 0;
  69.         }
  70.     }
  71. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement