Ejemplo n.º 1
0
    protected Vector3 UpdateNewDestinationAlongBezierCurve(Vector3 _endPosition)
    {
        float i_distanceToPointRatio = (1 + (transform.position - _endPosition).magnitude / bezierDistanceToHeightRatio); // widens the arc of surrounding the farther the surroundingPoint is

        Vector3 i_p0 = transform.position;                                                                                // The starting point

        Vector3 i_p2 = SwissArmyKnife.GetFlattedDownPosition(_endPosition, transform.position);                           // The destination

        float i_angle = Vector3.SignedAngle(i_p2 - i_p0, focusedPawnController.transform.position - i_p0, Vector3.up);

        int i_moveSens = i_angle > 1 ? 1 : -1;

        Vector3 i_p1 = i_p0 + (i_p2 - i_p0) / 0.5f + Vector3.Cross(i_p2 - i_p0, Vector3.up) * i_moveSens * bezierCurveHeight * i_distanceToPointRatio;  // "third point" of the bezier curve

        // Calculating position on bezier curve, following start point, end point and avancement
        // In this version, the avancement has been replaced by a constant because it's recalculated every frame
        Vector3 i_positionOnBezierCurve = (Mathf.Pow(0.5f, 2) * i_p0) + (2 * 0.5f * 0.5f * i_p1) + (Mathf.Pow(0.5f, 2) * i_p2);

        return(SwissArmyKnife.GetFlattedDownPosition(i_positionOnBezierCurve, focusedPawnController.transform.position));
    }
Ejemplo n.º 2
0
    private void FaceEnemyMiddlePoint()
    {
        Vector3 i_pointToFace = new Vector3();

        if (playerTransform == GameManager.playerOne.transform)
        {
            i_pointToFace  = EnemyManager.i.groupOneMiddlePoint;
            closestEnemies = EnemyManager.i.enemyGroupOne;
        }
        else if (playerTransform == GameManager.playerTwo.transform)
        {
            i_pointToFace  = EnemyManager.i.groupTwoMiddlePoint;
            closestEnemies = EnemyManager.i.enemyGroupTwo;
        }

        if ((i_pointToFace - transform.position).magnitude > minimalDistanceToFollow)
        {
            transform.LookAt(SwissArmyKnife.GetFlattedDownPosition(i_pointToFace, transform.position));
        }
    }