Advertisement
Guest User

Untitled

a guest
Dec 9th, 2016
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.77 KB | None | 0 0
  1. using UnityEngine;
  2. using System.Collections;
  3.  
  4. public class AsteroidController : MonoBehaviour {
  5.  
  6. private Transform player;
  7. private Rigidbody rigidBody;
  8. private const int speed = 500;
  9. public float distanceFromPlayer;
  10. public float distanceFromTarget;
  11. private bool reachedTarget = false;
  12. public int trackingAccuracy = 10;
  13.  
  14. public float movementSpeed;
  15.  
  16. [HideInInspector]
  17. private Vector3 targetedPosition;
  18.  
  19. // Use this for initialization
  20. void Start () {
  21. player = GameObject.FindGameObjectWithTag("Player").GetComponent<Transform>();
  22. rigidBody = GetComponent<Rigidbody>();
  23. CalculateTargetLocation();
  24. }
  25.  
  26. // Update is called once per frame
  27. void Update ()
  28. {
  29. distanceFromPlayer = Mathf.Abs(Vector3.Distance(player.position, transform.position));
  30. if (distanceFromPlayer > AsteroidSpawner.maxDistance)
  31. {
  32. CalculateTargetLocation();
  33. reachedTarget = false;
  34. }
  35.  
  36. distanceFromTarget = Mathf.Abs(Vector3.Distance(targetedPosition, transform.position));
  37. if (distanceFromTarget < 5f)
  38. {
  39. reachedTarget = true;
  40. }
  41. rigidBody.velocity = Vector3.ClampMagnitude(rigidBody.velocity, speed);
  42. }
  43.  
  44. void FixedUpdate () {
  45. if (!reachedTarget)
  46. {
  47. Vector3 directionalForce = targetedPosition * speed;
  48. rigidBody.AddForce(directionalForce);
  49. }
  50. }
  51.  
  52. void CalculateTargetLocation()
  53. {
  54. // calculate a random position around the player
  55. float angle = Random.Range(0.0f, Mathf.PI * 2);
  56. Vector3 circle = new Vector3(Mathf.Sin(angle), 0, Mathf.Cos(angle));
  57. circle *= trackingAccuracy;
  58. circle += player.position;
  59.  
  60. targetedPosition = circle;
  61. }
  62. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement