コード例 #1
0
    //========================================================================================
    //                                     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);
    }
コード例 #2
0
    //========================================================================================
    //                                    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);
    }