Beispiel #1
0
    static LookPoints GetLookPoints(vLookTarget lookTarget)
    {
        LookPoints points        = new LookPoints();
        var        centerArea    = lookTarget.centerArea;
        var        sizeArea      = lookTarget.sizeArea;
        var        lookTransform = lookTarget.transform;

        points.frontTopLeft     = new Vector3(centerArea.x - sizeArea.x, centerArea.y + sizeArea.y, centerArea.z - sizeArea.z);
        points.frontTopRight    = new Vector3(centerArea.x + sizeArea.x, centerArea.y + sizeArea.y, centerArea.z - sizeArea.z);
        points.frontBottomLeft  = new Vector3(centerArea.x - sizeArea.x, centerArea.y - sizeArea.y, centerArea.z - sizeArea.z);
        points.frontBottomRight = new Vector3(centerArea.x + sizeArea.x, centerArea.y - sizeArea.y, centerArea.z - sizeArea.z);
        points.backTopLeft      = new Vector3(centerArea.x - sizeArea.x, centerArea.y + sizeArea.y, centerArea.z + sizeArea.z);
        points.backTopRight     = new Vector3(centerArea.x + sizeArea.x, centerArea.y + sizeArea.y, centerArea.z + sizeArea.z);
        points.backBottomLeft   = new Vector3(centerArea.x - sizeArea.x, centerArea.y - sizeArea.y, centerArea.z + sizeArea.z);
        points.backBottomRight  = new Vector3(centerArea.x + sizeArea.x, centerArea.y - sizeArea.y, centerArea.z + sizeArea.z);

        points.frontTopLeft     = lookTransform.TransformPoint(points.frontTopLeft);
        points.frontTopRight    = lookTransform.TransformPoint(points.frontTopRight);
        points.frontBottomLeft  = lookTransform.TransformPoint(points.frontBottomLeft);
        points.frontBottomRight = lookTransform.TransformPoint(points.frontBottomRight);
        points.backTopLeft      = lookTransform.TransformPoint(points.backTopLeft);
        points.backTopRight     = lookTransform.TransformPoint(points.backTopRight);
        points.backBottomLeft   = lookTransform.TransformPoint(points.backBottomLeft);
        points.backBottomRight  = lookTransform.TransformPoint(points.backBottomRight);
        return(points);
    }
Beispiel #2
0
//	public IEnumerator Attack (Weapon weapon)
//	{
//		if (weapon != null) {
//			if (weapon.projectileCount > 0 && weapon.ready) {
//				weapon.ready = false;
//				Projectile obj = ProjectilePoolScript.current.getPooledProjectile ();
//				if (obj == null)
//					yield return null;
//				obj.gameObject.SetActive (true);
//				obj.transform.position = weapon.openingLocation.position;
//				obj.transform.rotation = weapon.openingLocation.rotation;
//				Vector3 relativePos = weapon.target.position - obj.transform.position;
//				Rigidbody2D projectileRB = obj.GetComponent<Rigidbody2D> ();
//				projectileRB.AddForce (relativePos * obj.speed);
//				weapon.projectileCount--;
//				yield return new WaitForSeconds (weapon.fireRate);
//				weapon.ready = true;
//			}
//		}
//	}

    public void UpdateLookDirection(Weapon weapon, float vertical, LookPoints lookPoints)
    {
        if (weapon != null)
        {
            if (.55 > vertical && vertical > .10)
            {
                weapon.transform.position = Vector3.Lerp(weapon.transform.position, lookPoints.upperRightPoint.position, 1);
                weapon.transform.rotation = Quaternion.Slerp(weapon.transform.rotation, lookPoints.upperRightPoint.rotation, Time.deltaTime * weapon.rotateSpeed);
            }
            else if (vertical >= .55)
            {
                weapon.transform.position = Vector3.Lerp(weapon.transform.position, lookPoints.abovePoint.position, 1);
                weapon.transform.rotation = Quaternion.Slerp(weapon.transform.rotation, lookPoints.abovePoint.rotation, Time.deltaTime * weapon.rotateSpeed);
            }
            else if (-.10 >= vertical && vertical >= -1)
            {
                weapon.transform.position = Vector3.Lerp(weapon.transform.position, lookPoints.bottomRightPoint.position, 1);
                weapon.transform.rotation = Quaternion.Slerp(weapon.transform.rotation, lookPoints.bottomRightPoint.rotation, Time.deltaTime * weapon.rotateSpeed);
            }
            else
            {
                weapon.transform.position = Vector3.Lerp(weapon.transform.position, lookPoints.rightPoint.position, 1);
                weapon.transform.rotation = Quaternion.Slerp(weapon.transform.rotation, lookPoints.rightPoint.rotation, Time.deltaTime * weapon.rotateSpeed);
            }
        }
    }
Beispiel #3
0
    /// <summary>
    /// Check if anny corner points of LookTarget area is visible from observer
    /// </summary>
    /// <param name="lookTarget">principal transform of lookTarget</param>
    /// <param name="from">observer point</param>
    /// <param name="debug">Draw lines </param>
    /// <returns></returns>
    public static bool IsVisible(this vLookTarget lookTarget, Vector3 from, bool debug = false)
    {
        if (lookTarget.HideObject)
        {
            return(false);
        }
        LookPoints points = GetLookPoints(lookTarget);

        if (lookTarget.visibleCheckType == vLookTarget.VisibleCheckType.None)
        {
            return(true);
        }
        else if (lookTarget.visibleCheckType == vLookTarget.VisibleCheckType.SingleCast)
        {
            if (CastPoint(from, lookTarget.transform.TransformPoint(lookTarget.centerArea), lookTarget.transform, debug))
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
        else if (lookTarget.visibleCheckType == vLookTarget.VisibleCheckType.BoxCast)
        {
            if (CastPoint(from, points.frontTopLeft, lookTarget.transform, debug))
            {
                return(true);
            }

            if (CastPoint(from, points.frontTopRight, lookTarget.transform, debug))
            {
                return(true);
            }

            if (CastPoint(from, points.frontBottomLeft, lookTarget.transform, debug))
            {
                return(true);
            }

            if (CastPoint(from, points.frontBottomRight, lookTarget.transform, debug))
            {
                return(true);
            }

            if (CastPoint(from, points.backTopLeft, lookTarget.transform, debug))
            {
                return(true);
            }

            if (CastPoint(from, points.backTopRight, lookTarget.transform, debug))
            {
                return(true);
            }

            if (CastPoint(from, points.backBottomLeft, lookTarget.transform, debug))
            {
                return(true);
            }

            if (CastPoint(from, points.backBottomRight, lookTarget.transform, debug))
            {
                return(true);
            }
        }

        return(false);
    }
Beispiel #4
0
    /// <summary>
    /// Check if anny corner points of LookTarget area is visible from observer
    /// </summary>
    /// <param name="lookTarget">principal transform of lookTarget</param>
    /// <param name="from">observer point</param>
    /// <param name="layerMask">Layer to check</param>
    /// <param name="debug">Draw lines </param>
    /// <returns></returns>
    public static bool IsVisible(this vLookTarget lookTarget, Vector3 from, LayerMask layerMask, bool debug = false)
    {
        if (lookTarget.HideObject)
        {
            return(false);
        }

        if (lookTarget.visibleCheckType == vLookTarget.VisibleCheckType.None)
        {
            if (lookTarget.useLimitToDetect && Vector3.Distance(from, lookTarget.transform.position) > lookTarget.minDistanceToDetect)
            {
                return(false);
            }

            return(true);
        }
        else if (lookTarget.visibleCheckType == vLookTarget.VisibleCheckType.SingleCast)
        {
            if (lookTarget.useLimitToDetect && Vector3.Distance(from, lookTarget.centerArea) > lookTarget.minDistanceToDetect)
            {
                return(false);
            }
            if (CastPoint(from, lookTarget.transform.TransformPoint(lookTarget.centerArea), lookTarget.transform, layerMask, debug))
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
        else if (lookTarget.visibleCheckType == vLookTarget.VisibleCheckType.BoxCast)
        {
            if (lookTarget.useLimitToDetect && Vector3.Distance(from, lookTarget.transform.position) > lookTarget.minDistanceToDetect)
            {
                return(false);
            }
            LookPoints points = GetLookPoints(lookTarget);

            if (CastPoint(from, points.frontTopLeft, lookTarget.transform, layerMask, debug))
            {
                return(true);
            }

            if (CastPoint(from, points.frontTopRight, lookTarget.transform, layerMask, debug))
            {
                return(true);
            }

            if (CastPoint(from, points.frontBottomLeft, lookTarget.transform, layerMask, debug))
            {
                return(true);
            }

            if (CastPoint(from, points.frontBottomRight, lookTarget.transform, layerMask, debug))
            {
                return(true);
            }

            if (CastPoint(from, points.backTopLeft, lookTarget.transform, layerMask, debug))
            {
                return(true);
            }

            if (CastPoint(from, points.backTopRight, lookTarget.transform, layerMask, debug))
            {
                return(true);
            }

            if (CastPoint(from, points.backBottomLeft, lookTarget.transform, layerMask, debug))
            {
                return(true);
            }

            if (CastPoint(from, points.backBottomRight, lookTarget.transform, layerMask, debug))
            {
                return(true);
            }
        }
        return(false);
    }