Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- public class Enemy : MonoBehaviour
- {
- public GameObject player;
- public GameObject Cube;
- public float shootRare;
- public float speed;
- public float heigh;
- float currentDelay = 0f;
- float damage = 20f;
- bool canJump = false;
- public float right = 1f;
- void Start()
- {
- currentDelay = shootRare;
- }
- void Update()
- {
- if(currentDelay <= 0f)
- {
- Shoot();
- }
- else
- {
- currentDelay -= Time.deltaTime;
- }
- }
- void Shoot()
- {
- transform.LookAt(player.transform);
- Ray ray = new Ray(transform.position, transform.forward + Vector3.right * Random.Range(-0.2f, 0.2f));
- RaycastHit hit;
- Debug.DrawRay(ray.origin, ray.direction, Color.green, 10f);
- if ( Physics.Raycast ( ray, out hit, float.PositiveInfinity) )
- {
- GameObject obj = hit.collider.gameObject;
- Heal health = obj.GetComponent<Heal>();
- if(health)
- {
- health.DealDamage(damage);
- }
- }
- if (Random.Range(0f, 1f) > 0.5f) right = 1f;
- else right = -1f;
- transform.Rotate(Vector3.up, 90f * right);
- Move();
- currentDelay = shootRare;
- }
- void Move()
- {
- Rigidbody rb = GetComponent<Rigidbody>();
- Ray ray = new Ray(transform.position, Vector3.down);
- float distance1 = Vector3.Distance(transform.position, player.transform.position);
- float distance2 = Vector3.Distance(transform.position, Cube.transform.position);
- if (Physics.Raycast(ray, 1))
- {
- canJump = true;
- }
- if (canJump)
- {
- rb.AddForce(Vector3.up * heigh, ForceMode.VelocityChange);
- canJump = false;
- }
- if ( rb.velocity.magnitude < 2f )
- {
- if (distance2 < 5f)
- {
- transform.LookAt(player.transform);
- transform.Rotate(Vector3.up, 180f);
- rb.AddRelativeForce(transform.forward * speed, ForceMode.VelocityChange);
- }
- if (distance1 > 5f)
- {
- transform.LookAt(player.transform);
- rb.AddRelativeForce(transform.forward * speed, ForceMode.VelocityChange);
- }
- else
- {
- rb.AddRelativeForce(transform.forward * speed, ForceMode.VelocityChange);
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement