Exemple #1
0
 //开启协程等待攻击到达
 public IEnumerator AttackReach(IAttackResultMode m, float attackValue, GameObject bulletObjectPrefab, Vector3 startPosition)
 {
     //生成子弹并设定其目标
     if (bulletObjectPrefab != null)
     {
         GameObject bulletGameObject = Instantiate(bulletObjectPrefab);
         bulletGameObject.transform.position = startPosition;
         BulletObject bulletObject = bulletGameObject.GetComponent <BulletObject>();
         bulletObject.target = gameObject;
         if (bulletObject.spaceObjectPrefab != null)
         {
             bulletObject.attackResultMode = m;
             bulletObject.attackValue      = attackValue;
             yield break;//终止协程,因为bulletObject中会完成攻击,防止计算2次伤害
         }
         yield return(new WaitUntil(bulletObject.ReachSignal));
     }
     //处理攻击结果(各种ITarget的AttackReach最终都会来到这里)
     nowHealth -= m.getHealthReduction(this, attackValue);
 }