public void Eexecute0(GameActor actor, float deltaTime) { PositiveActor positiveActor = (PositiveActor)actor; if (positiveActor.HaveTarget) { if (positiveActor.TrackTarget()) { float dt = Time.deltaTime; positiveActor.ShootProgress += dt; if (positiveActor.ShootProgress >= positiveActor.ShootDuration * 1000) { positiveActor.Shoot(); actor.TurnNextState(); } } else { positiveActor.loseTarget(); actor.TurnNextState(); } } else { if (positiveActor.AcquireTarget()) { positiveActor.StartAttackTime = Time.time; } else { actor.TurnNextState(); } } }
protected override bool CanEnter0(GameActor actor) { if (!(actor is PositiveActor)) { return(false); } PositiveActor positiveActor = (PositiveActor)actor; float now = Time.time; return((now - positiveActor.LastAttackTime) >= positiveActor.ShootInterval && positiveActor.AcquireTarget()); }