Пример #1
0
    IEnumerator moveToPoint(Point target)
    {
        Vector2 targetPos = Pathing.pointToPosition(target);

        //move
        while (!haveReachedPoint(target))
        {
            transform.position = Vector2.MoveTowards(transform.position, targetPos, moveSpeed * Time.deltaTime);
            yield return(null);
        }

        movingToPointRoutine = null;
    }
Пример #2
0
    IEnumerator rotateTowardsPoint(Point target)
    {
        Vector3 targetPos = Pathing.pointToPosition(target);


        while (true)
        {
            Vector3    vectorToTarget = targetPos - transform.position;
            float      angle          = Mathf.Atan2(vectorToTarget.y, vectorToTarget.x) * Mathf.Rad2Deg;
            Quaternion q = Quaternion.AngleAxis(angle, Vector3.forward);
            transform.rotation = Quaternion.RotateTowards(transform.rotation, q, turnSpeed * Time.deltaTime);

            if (isLookingAtObject(q))
            {
                break;
            }

            yield return(null);
        }


        //Debug.Log("done rotationg");
        rotationRoutine = null;
    }