Ejemplo n.º 1
0
    private Vector3 CalculateTransformPosition(Transform projectileTransform, ProjectilePositions position)
    {
        Vector3 leftTop     = cameraCorners[Corner.LeftTop];
        Vector3 rightBottom = cameraCorners[Corner.RightBottom];

        float y = CutYCorners(projectileTransform.position.y, leftTop, rightBottom);
        float x = CutXCorners(projectileTransform.position.x, leftTop, rightBottom);

        switch (position)
        {
        case ProjectilePositions.Left:
            return(new Vector3(leftTop.x + screenBorderOffset, y));

        case ProjectilePositions.Up:
            return(new Vector3(x, leftTop.y - screenBorderOffset));

        case ProjectilePositions.Right:
            return(new Vector3(rightBottom.x - screenBorderOffset, y));

        case ProjectilePositions.Down:
            return(new Vector3(x, rightBottom.y + screenBorderOffset));

        case ProjectilePositions.OnCamera:
            return(transform.position);

        default:
            return(new Vector3(x, y));
        }
    }
Ejemplo n.º 2
0
    public void SpawnAlert(Transform projectileTransform)
    {
        cameraCorners = Coordinates.GetDictionary();

        ProjectilePositions position = CalculateProjectilePosition(projectileTransform);

        MoveAlert(projectileTransform, position);

        alertAnimationController = new AlertAnimationController(GetComponent <Animator>());
        FadeIn();
    }
Ejemplo n.º 3
0
    private Quaternion CalculateCornerRotation(Transform projectileTransform, ProjectilePositions position)
    {
        Vector3 diffVector = ProjectilePositionToCameraCorner(position);

        Vector3 diff = projectileTransform.position - diffVector;

        diff.z = 0;

        float angle = Vector3.Angle(diff, Vector3.up) - 180;

        if (position == ProjectilePositions.RightUp || position == ProjectilePositions.RightDown)
        {
            angle *= -1;
        }

        return(Quaternion.Euler(0f, 0f, angle));
    }
Ejemplo n.º 4
0
    public void UpdateAlert(Transform projectileTransform)
    {
        ProjectilePositions position = CalculateProjectilePosition(projectileTransform);

        if (!ArrayUtility.Contains <ProjectilePositions>(ignoredPositions, position))
        {
            MoveAlert(projectileTransform, position);

            if (fadedOut && position != ProjectilePositions.OnCamera)
            {
                FadeIn();
            }
        }

        if (!fadedOut && position == ProjectilePositions.OnCamera)
        {
            FadeOut();
        }
    }
Ejemplo n.º 5
0
    private Vector3 ProjectilePositionToCameraCorner(ProjectilePositions position)
    {
        switch (position)
        {
        case ProjectilePositions.LeftUp:
            return(cameraCorners[Corner.LeftTop]);

        case ProjectilePositions.LeftDown:
            return(cameraCorners[Corner.LeftBottom]);

        case ProjectilePositions.RightUp:
            return(cameraCorners[Corner.RightTop]);

        case ProjectilePositions.RightDown:
            return(cameraCorners[Corner.RightBottom]);
        }

        return(Vector3.zero);
    }
Ejemplo n.º 6
0
    private Quaternion CalculateRotation(Transform projectileTransform, ProjectilePositions position)
    {
        switch (position)
        {
        case ProjectilePositions.Down:
            return(Quaternion.identity);

        case ProjectilePositions.Left:
            return(Quaternion.Euler(0f, 0f, -90f));

        case ProjectilePositions.Up:
            return(Quaternion.Euler(0f, 0f, 180f));

        case ProjectilePositions.Right:
            return(Quaternion.Euler(0f, 0f, 90f));

        case ProjectilePositions.OnCamera:
            return(transform.rotation);

        default:
            return(CalculateCornerRotation(projectileTransform, position));
        }
    }
Ejemplo n.º 7
0
 private void PositionAlert(Transform projectileTransform, ProjectilePositions position)
 {
     transform.position = CalculateTransformPosition(projectileTransform, position);
 }
Ejemplo n.º 8
0
 private void RotateAlert(Transform projectileTransform, ProjectilePositions position)
 {
     transform.rotation = CalculateRotation(projectileTransform, position);
 }
Ejemplo n.º 9
0
    private void MoveAlert(Transform projectileTransform, ProjectilePositions position)
    {
        RotateAlert(projectileTransform, position);

        PositionAlert(projectileTransform, position);
    }