Advertisement
Ychenik

Easy enemy

Apr 8th, 2020
288
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.59 KB | None | 0 0
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4.  
  5. public class Enemy : MonoBehaviour
  6. {
  7.     public GameObject player;
  8.     public GameObject Cube;
  9.  
  10.     public float shootRare;
  11.     public float speed;
  12.     public float heigh;
  13.     float currentDelay = 0f;
  14.     float damage = 20f;
  15.  
  16.     bool canJump = false;
  17.  
  18.     public float right = 1f;
  19.     void Start()
  20.     {
  21.         currentDelay = shootRare;
  22.     }
  23.  
  24.     void Update()
  25.     {
  26.         if(currentDelay <= 0f)
  27.         {
  28.             Shoot();
  29.         }
  30.         else
  31.         {
  32.             currentDelay -= Time.deltaTime;
  33.         }
  34.     }
  35.     void Shoot()
  36.     {
  37.         transform.LookAt(player.transform);
  38.         Ray ray = new Ray(transform.position, transform.forward + Vector3.right * Random.Range(-0.2f, 0.2f));
  39.         RaycastHit hit;
  40.         Debug.DrawRay(ray.origin, ray.direction, Color.green, 10f);
  41.  
  42.         if ( Physics.Raycast ( ray, out hit, float.PositiveInfinity) )
  43.         {
  44.             GameObject obj = hit.collider.gameObject;
  45.             Heal health = obj.GetComponent<Heal>();
  46.             if(health)
  47.             {
  48.                 health.DealDamage(damage);
  49.             }
  50.         }
  51.  
  52.         if (Random.Range(0f, 1f) > 0.5f) right = 1f;
  53.         else right = -1f;
  54.         transform.Rotate(Vector3.up, 90f * right);
  55.         Move();
  56.  
  57.         currentDelay = shootRare;
  58.     }
  59.  
  60.     void Move()
  61.     {
  62.         Rigidbody rb = GetComponent<Rigidbody>();
  63.         Ray ray = new Ray(transform.position, Vector3.down);
  64.         float distance1 = Vector3.Distance(transform.position, player.transform.position);
  65.         float distance2 = Vector3.Distance(transform.position, Cube.transform.position);
  66.  
  67.         if (Physics.Raycast(ray, 1))
  68.         {
  69.             canJump = true;
  70.         }
  71.  
  72.         if (canJump)
  73.         {
  74.             rb.AddForce(Vector3.up * heigh, ForceMode.VelocityChange);
  75.             canJump = false;
  76.         }
  77.  
  78.         if ( rb.velocity.magnitude < 2f )
  79.         {
  80.             if (distance2 < 5f)
  81.             {
  82.                 transform.LookAt(player.transform);
  83.                 transform.Rotate(Vector3.up, 180f);
  84.                 rb.AddRelativeForce(transform.forward * speed, ForceMode.VelocityChange);
  85.             }
  86.             if (distance1 > 5f)
  87.             {
  88.                 transform.LookAt(player.transform);
  89.                 rb.AddRelativeForce(transform.forward * speed, ForceMode.VelocityChange);
  90.             }
  91.             else
  92.             {
  93.                 rb.AddRelativeForce(transform.forward * speed, ForceMode.VelocityChange);
  94.             }
  95.         }
  96.     }
  97. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement