Esempio n. 1
0
 public void FireArrow()
 {
     if (target != null)
     {
         if (ActorProxy.isPlayingAI)
         {
             ActorProxy.FireCannonBallWithRelay(E_CannonType.BOMBER, target.transform.position);
         }
     }
 }
Esempio n. 2
0
        public override IEnumerator Action(ActorProxy actorProxy, ActorProxy targetActorProxy)
        {
            var        actorTransform = actorProxy.transform;
            var        mortar         = actorProxy.baseEntity as Mortar;
            float      t = 0f;
            Quaternion q = mortar.ts_Head.rotation;
            var        targetTransform = targetActorProxy.transform;

            while (t < 0.5f)
            {
                if (targetActorProxy == null ||
                    targetActorProxy.baseEntity == null ||
                    targetActorProxy.baseEntity.CanBeTarget() == false)
                {
                    yield break;
                }

                t += Time.deltaTime;
                mortar.ts_Head.rotation = Quaternion.Lerp(q,
                                                          Quaternion.LookRotation((targetTransform.position - actorTransform.position).normalized),
                                                          t / 0.5f);
                yield return(null);
            }

            for (int i = 0; i < mortar.arrAnimator.Length; ++i)
            {
                mortar.arrAnimator[i].SetTrigger(AnimationHash.Shoot);
            }

            if (mortar.ps_Fire != null)
            {
                mortar.ps_Fire.Play();
            }

            mortar.FireLightOn();

            if (actorProxy.isPlayingAI)
            {
                actorProxy.FireCannonBallWithRelay(E_CannonType.DEFAULT, targetActorProxy.transform.position);
            }

            yield return(new WaitForSeconds(0.15f));

            mortar.FireLightOff();
        }