//======================================================================================== // public //======================================================================================== /// <summary> /// 炎発射 /// </summary> /// <param name="startPos"></param> /// <param name="TargetPos"></param> public void StartFire(Vector3 startPos, Vector3 TargetPos) { transform.position = startPos; Vec3Comp = new Vector3Complession(startPos, TargetPos); var hit = GetComponentInChildren <HitSeriesofAction>(); hit.Initialize(this.gameObject); hit.Activate(); FireUpdateCort = GameObjectExtensions.LoopMethod(MaxLandingTime, PositionMove, PositionMoveEnd); StartCoroutine(FireUpdateCort); }
//======================================================================================== // IEnumerater系 //======================================================================================== /// <summary> /// 次のエリアへ移動する /// </summary> IEnumerator IEUpdateMoveNextArea(Transform trans) { // 位置計算系 Vector3Complession compPos = new Vector3Complession(); compPos.Initialize(transform.position, trans.position); float Height = 5f; // 角度計算系 QuaternionComplession compQt = new QuaternionComplession(); { var startQt = Quaternion.LookRotation(transform.forward); var endQt = Quaternion.LookRotation((City.Instance.transform.position - trans.position).normalized); compQt.Initialize(startQt, endQt); } const float MaxTime = 1.5f; TimeComplession time = new TimeComplession(MaxTime); while (true) { time.TimeUpdate(); if (time.IsEnd) { break; } float rate = (time.Rate); Vector3 pos = compPos.CalcPosition(rate); pos.y = Height * JumpCurve.Evaluate(rate); transform.position = pos; transform.rotation = compQt.Slerp(rate); yield return(null); } transform.position = compPos.CalcPosition(1f); transform.rotation = compQt.Slerp(1f); BossControll.SetState(BossAnimationController.EnemyState.Wait); }