Beispiel #1
0
    /// <summary>
    /// 被攻撃処理 enemyは弱点に応じてダメージが増え、状態異常を受ける可能性がある
    /// </summary>
    /// <param name="value">受けるダメージ</param>
    /// <param name="ele">ダメージの属性</param>
    public override void TakeAttack(float value, Vector3 HitPosition, AbnState ele = null)
    {
        if (value <= 0)
        {
            return;
        }

        bool isWeak = false;

        //属性による影響
        if (ele)
        {
            isWeak = (ele.type == weakType);
            //弱点の反映
            value *= isWeak ? ConstData.WEAK_DAMAGE_BONUS : 1;

            //状態異常による影響
            value = abnManager.TakeDamage(this, value, ele.type);

            //状態異常の反映
            if (Random.Range(0f, 1f) <= (isWeak ? ele.weakPercent : ele.percent))
            {
                TakeAbnormalState(ele);
                //Debug.Log("ok");
            }
        }

        GetDamage(value, HitPosition, isWeak);
    }
Beispiel #2
0
    /// <summary>
    /// 被攻撃処理
    /// </summary>
    /// <param name="value">受けるダメージ</param>
    /// <param name="ele">ダメージの属性</param>
    /// <param name="abnormalStatePersentage">状態異常発生確率(状態異常の仕様によって変更の可能性高)</param>
    public virtual void TakeAttack(float value, Vector3 HitPosition, AbnState ele = null)
    {
        if (value <= 0)
        {
            return;
        }

        GetDamage(value, HitPosition);
    }
 /// <summary>
 /// 属性の格納位置を調べる
 /// </summary>
 /// <returns>The abn state number.</returns>
 /// <param name="state">State.</param>
 private int GetAbnStateNum(AbnState state)
 {
     foreach (var item in (GetStateList(state.type).Select((v, i) => new { v, i })))
     {
         if (item.v == state)
         {
             return(item.i);
         }
     }
     return(0);
 }
    /// <summary>
    /// 新しい状態異常の追加
    /// </summary>
    /// <param name="state">状態異常の情報</param>
    public void AddAbnormalState(AbnState value)
    {
        Vector3 set = objtransform.position;

        //set.x += 0 + (int)value.type;
        //既に同じタイプの状態異常があれば、それを上書きする
        if (!AbnormalStateSymbol[(int)value.type])
        {
            AbnormalStateSymbol[(int)value.type] = GameObject.Instantiate(StateSymbolMaterial[(int)value.type], set, Quaternion.identity);
            AbnormalStateSymbol[(int)value.type].transform.SetParent(objtransform);
        }
        states[(int)value.type] = new State(value);
    }
Beispiel #5
0
    /// <summary>
    /// 属性の変更
    /// </summary>
    /// <param name="type">変更先の属性</param>
    public void ChangeElement(element type)
    {
        BulletObject bulObj = bulletObj.GetComponent <BulletObject> ();
        AbnState     state  = null;

        if (bulObj)
        {
            if (bulObj.elementType == type)
            {
                return;
            }
            state = MagicSystemManager.instance._abnstateManager.GetElement(bulObj.elementType, bulObj.element);
        }
        if (state == null)
        {
            state = MagicSystemManager.instance._abnstateManager.GetElement(MagickMakeManager.Instance.selectElement);
        }
        ChangeElement(state);
    }
Beispiel #6
0
    /// <summary>
    /// 新しい状態異常の追加
    /// </summary>
    /// <param name="state">状態異常の情報</param>
    public void AddAbnormalState(AbnState value)
    {
        Vector3 set = objtransform.position;

        //set.x += 0 + (int)value.type;
        //既に同じタイプの状態異常があれば、それを上書きする
        if (!AbnormalStateSymbol[(int)value.type, 0])
        {
            for (int i = 0; i < SYMBOL_COUNT; i++)
            {
                AbnormalStateSymbol[(int)value.type, i] = GameObject.Instantiate(StateSymbolMaterial[(int)value.type], set, Quaternion.identity);
                AbnormalStateSymbol[(int)value.type, i].transform.SetParent(objtransform);
                Vector3 size = AbnormalStateSymbol[(int)value.type, i].transform.localScale;
                AbnormalStateSymbol[(int)value.type, i].transform.localScale    = new Vector3(symbolSize.x * size.x, symbolSize.y * size.y, symbolSize.z * size.z);
                AbnormalStateSymbol[(int)value.type, i].transform.localPosition = symbolPos;
            }
        }
        states[(int)value.type] = new State(value);
    }
Beispiel #7
0
    public void ChangeElement(AbnState state)
    {
        Destroy(bulletObj);
        GameObject prefab = MagicSystemManager.instance._abnstateManager.GetElementPrefab(state.type, bulletType);

        bulletObj = Instantiate(prefab, transform);
        //bulletObj.transform.localPosition = defautPosition;
        bulletObj.transform.localPosition    = GetDefaultPos();
        bulletObj.transform.localEulerAngles = Vector3.zero;
        InitBulletObj();
        BulletObject bulObj = bulletObj.GetComponent <BulletObject> ();

        bulObj.element = state;
        abnState       = bulObj.element;
        bulObj.parent  = this;

        if (pairBullet)
        {
            pairBullet.ChangeElement(state);
        }
    }
 public override void TakeAttack(float value, Vector3 HitPosition, AbnState ele = null)
 {
     base.TakeAttack(value, HitPosition, ele);
     SEManager.SetSE(MagicSystemManager.instance.SEManager.Damage);
 }
 /// <summary>
 /// 属性の変更
 /// </summary>
 /// <param name="value"></param>
 public void ChangeElementType(AbnState value)
 {
     element = value;
 }
 /// <summary>
 /// 指定した条件の属性を取得する
 /// </summary>
 /// <returns>The element.</returns>
 /// <param name="ele">指定する属性</param>
 /// <param name="state">同じパラメータの属性</param>
 public AbnState GetElement(element ele, AbnState state)
 {
     return(GetStateList(ele) [GetAbnStateNum(state)]);
 }
Beispiel #11
0
 public State(AbnState state)
 {
     this.state  = state;
     elapsedTime = 0;
     dilayTime   = 0;
 }
Beispiel #12
0
 /// <summary>
 /// 状態異常を受ける処理
 /// </summary>
 /// <param name="value"></param>
 public virtual void TakeAbnormalState(AbnState value)
 {
     abnManager.AddAbnormalState(value);
 }
Beispiel #13
0
 public override void TakeAbnormalState(AbnState value)
 {
     //ボスは状態異常を無効化するので空
 }
Beispiel #14
0
 public void Save()
 {
     position = bullet.transform.localPosition;
     rotation = bullet.transform.localEulerAngles;
     state    = bullet.GetAbnState();
 }