Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using UnityEngine;
- using System.Collections;
- public class Projectile2 : MonoBehaviour
- {
- public string type;
- public float speed;
- private GameObject checkNearestItem;
- private Enemy enemy;
- //Bezier Management
- private float startmeX = 0.0f;
- private float startmeX2 = 0.0f;
- private float startmeY = 0.0f;
- private float ControlPointX = 260.0f;
- private float ControlPointY = -10.0f;
- private float CurveX;
- private float CurveY;
- private float BezierTime = 0.0f;
- // Use this for initialization
- void Start ()
- {
- startmeX = transform.position.x - 0.0f;
- startmeX2 = transform.position.x - 34.0f;
- startmeY = transform.position.y - 50.0f;
- }
- // Update is called once per frame
- void Update ()
- {
- //Rotate the canonball projectile
- transform.Rotate (0,4,0);
- checkNearestItem = GameObject.Find(FindClosestEnemy().name);
- //Attack the nearest ENEMY
- if (checkNearestItem != null)
- {
- BezierTime = BezierTime + Time.deltaTime;
- if (BezierTime >= 1)
- {
- BezierTime = 0;
- Destroy(gameObject);
- }
- CurveX = (((1-BezierTime)*(1-BezierTime)) * startmeX) + (2 * BezierTime * (1 - BezierTime) * (((checkNearestItem.transform.position.x - 0.0f) - startmeX) / 2.0f + startmeX)) + ((BezierTime * BezierTime) * (checkNearestItem.transform.position.x - 0.0f));
- CurveY = (((1-BezierTime)*(1-BezierTime)) * startmeY) + (2 * BezierTime * (1 - BezierTime) * ControlPointY) + ((BezierTime * BezierTime) * checkNearestItem.transform.position.y);
- transform.position = new Vector3(CurveX, CurveY, 1);
- }
- //End of Update()
- }
- GameObject FindClosestEnemy () {
- GameObject[] gos;
- gos = GameObject.FindGameObjectsWithTag("Croc");
- GameObject closest;
- float distance = Mathf.Infinity;
- Vector3 position = transform.position;
- foreach (GameObject go in gos) {
- //List only enemies whose Y position is equal to 90.
- if (go.transform.position.y == 90)
- {
- Vector3 diff = go.transform.position - position;
- float curDistance = diff.sqrMagnitude;
- if (curDistance < distance)
- {
- closest = go;
- distance = curDistance;
- }
- }
- }
- return closest;
- }
- public Vector3 GetQuadraticCoordinates(float t, Vector3 p0, Vector3 c0, Vector3 p1)
- {
- return Mathf.Pow(1-t,2)*p0 + 2*t*(1-t)*c0 + Mathf.Pow(t,2)*p1;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement