public override IEnumerator Action(ActorProxy actorProxy, ActorProxy targetActorProxy) { var rocket = actorProxy.baseEntity as Rocket; var actorTransform = actorProxy.transform; var target = targetActorProxy.baseEntity; var startPos = actorTransform.position; var endPos = targetActorProxy.baseEntity.ts_HitPos.position; var distance = Vector3.Distance(startPos, endPos); var moveTime = distance / actorProxy.baseEntity.moveSpeed; actorProxy.transform.LookAt(targetActorProxy.transform); float t = 0; while (t < moveTime) { if (target != null && target.isAlive) { endPos = target.ts_HitPos.position; } actorTransform.position = Vector3.Lerp(startPos, endPos, t / moveTime); t += Time.deltaTime; yield return(null); } if (actorProxy.isPlayingAI) { targetActorProxy.HitDamage(actorProxy.power); } rocket.Bomb(); }