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; }
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; }