Ejemplo n.º 1
0
    protected IEnumerator GoToWaypoint(GameObject waypointGO)
    {
        RisovalkaWaypoint waypoint = waypointGO.GetComponent <RisovalkaWaypoint>();

        currentSpeed     += waypoint.speedIncrement;
        currentTurnSpeed += waypoint.turnSpeedIncrement;
        currentRotation   = 0;

        if (waypoint.teleport)
        {
            transform.position   = waypointGO.transform.position;
            transform.rotation   = waypoint.targetRotation;
            transform.localScale = waypoint.targetScale;

            ApplyChanges(waypoint);

            yield break;
        }
        else
        {
            while (MovingToWaypoint(waypoint))
            {
                CalculateMovement(waypoint);

                yield return(new WaitForEndOfFrame());
            }

            ApplyChanges(waypoint);
        }
        yield break;
    }
Ejemplo n.º 2
0
    protected override void CalculateMovement(RisovalkaWaypoint waypoint)
    {
        Vector3 relativeTarget = transform.InverseTransformPoint(waypoint.transform.position); //get relative target position

        float targetAngle = Mathf.Atan2(relativeTarget.y, relativeTarget.x);                   //get desired angle

        targetAngle *= Mathf.Rad2Deg;                                                          // convert to degrees
        targetAngle -= forwardRotation;

        if (targetAngle != transform.rotation.z) //only turn when needed
        {
            float turningThisFrame;
            if (Mathf.Abs(targetAngle - transform.rotation.z) > currentTurnSpeed * Time.deltaTime)
            {
                turningThisFrame = Mathf.Sign(targetAngle - transform.rotation.z) * currentTurnSpeed * Time.deltaTime;
            }
            else
            {
                turningThisFrame = targetAngle - transform.rotation.z;
            }

            transform.Rotate(0, 0, turningThisFrame);
        }

        Vector3 movementThisFrame = new Vector3(currentSpeed * Time.deltaTime, 0, 0);

        Quaternion rotateMovementVector = transform.rotation;

        rotateMovementVector *= Quaternion.Euler(0, 0, forwardRotation);

        movementThisFrame   = rotateMovementVector * movementThisFrame;
        transform.position += movementThisFrame;
    }
Ejemplo n.º 3
0
 protected override bool MovingToWaypoint(RisovalkaWaypoint waypoint)
 {
     if (Mathf.Abs(transform.position.x - waypoint.transform.position.x) < distanceToWaypoint && Mathf.Abs(transform.position.y - waypoint.transform.position.y) < distanceToWaypoint)
     {
         return(false);
     }
     else
     {
         return(true);
     }
 }
Ejemplo n.º 4
0
    protected override void CalculateMovement(RisovalkaWaypoint waypoint)
    {
        transform.position = Vector3.MoveTowards(transform.position, waypoint.transform.position, currentSpeed * Time.deltaTime);

        if (transform.rotation != waypoint.targetRotation)
        {
            transform.rotation = Quaternion.RotateTowards(transform.rotation, waypoint.targetRotation, currentSpeed / 5 * Time.deltaTime);
        }

        if (transform.localScale != waypoint.targetScale)
        {
            transform.localScale = Vector3.MoveTowards(transform.localScale, waypoint.targetScale, currentSpeed / 30 * Time.deltaTime);
        }
    }
Ejemplo n.º 5
0
    protected void ApplyChanges(RisovalkaWaypoint waypoint)
    {
        if (waypoint.move != 0)
        {
            FindObjectOfType <RisovalkaController>().MoveBackgroundSprites(waypoint.move);
        }

        if (waypoint.dropPrize)
        {
            prize = Instantiate(prize);
            prize.transform.position = waypoint.transform.position;

            FindObjectOfType <RisovalkaController>().OpenBox();
        }

        if (GetNextWaypoint(waypoint.gameObject) != null)
        {
            GoToNextWaypoint(GetNextWaypoint(waypoint.gameObject));
        }
        else
        {
            DisableThis();
        }
    }
Ejemplo n.º 6
0
 protected override bool MovingToWaypoint(RisovalkaWaypoint waypoint)
 {
     return(transform.position != waypoint.transform.position);
 }
Ejemplo n.º 7
0
 protected virtual void CalculateMovement(RisovalkaWaypoint waypoint)
 {
 }