protected override IEnumerator EventCoroutine() { CharacterMovement.MOVING_TYPE lastMovingType = CharacterMovement.MOVING_TYPE.ground; List <int> pillarOrder = new List <int>(); for (int i = 0; i < pillars.Length; i++) { pillarOrder.Add(i); } for (int i = 0; i < pillars.Length * 2; i++) { int j = UnityEngine.Random.Range(0, pillars.Length); int jj = UnityEngine.Random.Range(0, pillars.Length); int a = pillarOrder[j]; int b = pillarOrder[jj]; Swap(ref a, ref b); pillarOrder[j] = a; pillarOrder[jj] = b; } AIBase ai = boss.GetComponent <AIDragon>(); ai.SetTargetUnit(eventPlayer); while (true) { if (boss.GetMovement().GetMovingType() != lastMovingType)// On changed moving Type { lastMovingType = boss.GetMovement().GetMovingType(); if (lastMovingType == CharacterMovement.MOVING_TYPE.flying) { int p = pillarOrder[0]; Debug.Log(p); pillarOrder.RemoveAt(0); Material mat = pillars[p].GetComponent <MeshRenderer>().material; mat.color = Color.red; pillars[p].SetEnable(true); pillars[p].AddEvent( delegate(Transform caller) { if (caller.tag == "Player") { boss.GetMovement().SetMovingType(CharacterMovement.MOVING_TYPE.ground); pillars[p].SetEnable(false); mat.color = Color.black; } } ); } else { } } yield return(null); } yield return(null); }
public override IEnumerator BuffCoroutine(UnitInfo owner) { AddBuffAction(owner); Rigidbody rigidbody = owner.GetComponent <Rigidbody>(); float buffTimeCount = buffTime; do { if (!owner.GetMovement().isOnGround) { Vector3 newVelocity = rigidbody.velocity; if (newVelocity.y < 0) { /*newVelocity.y *= 0.8f; * rigidbody.velocity = newVelocity;*/ } } buffTimeCount -= Time.deltaTime; yield return(null); } while (buffTimeCount > 0); ActionBehaviour aBehaviour = owner.GetAction().GetBehaviour("Flying"); if (aBehaviour) { owner.GetAction().RemoveAction(aBehaviour); GameObject.Destroy(aBehaviour.gameObject); } owner.RemoveBuff(this); }