IEnumerator Attack() { float speed = body.velocity.magnitude; float maxSpeed = Game.TowerInfo.DefaultMovementSpeed; var gravity = (destination.transform.position - transform.position).normalized; while (true) { speed += Time.fixedDeltaTime * 5.0f; if (speed > maxSpeed) { speed = maxSpeed; } gravity = (destination.transform.position - transform.position).normalized; body.velocity = (body.velocity + gravity).normalized * speed; if (Vector3.Distance(destination.transform.position, transform.position) <= .5f) { break; } yield return(new WaitForFixedUpdate()); } gameObject.SetActive(false); destination.UnitEntered(this); }
public void Drive() { if (AtDestination) { destination.UnitEntered(unit); } }