void Damage(AttackArea.AttackInfo attackInfo)
 {
     transform.root.SendMessage("Damage", attackInfo);
     if (transform.root.tag == "Boss")
     {
         transform.root.gameObject.SendMessage("Damage", attackInfo);
     }
 }
Exemple #2
0
    void Damage(AttackArea.AttackInfo attackInfo)
    {
        var effect = Instantiate(this.hitEffect, this.transform.position, Quaternion.identity);

        effect.transform.localPosition = this.transform.position + new Vector3(0.0f, 0.5f, 0.0f);
        Destroy(effect, 0.3f);

        Debug.Log($"Enemy damage: {nameof(this.DamageMine)}");
        this.enemyMonobitView.RPC(nameof(this.DamageMine), MonobitTargets.All, attackInfo.attackPower);
    }
Exemple #3
0
 void Damage(AttackArea.AttackInfo attackInfo)
 {
     status.HP -= attackInfo.attackPower;
     if (status.HP <= 0)
     {
         status.HP = 0;
         // 체력이 0이므로 사망 스테이트로 전환한다.
         ChangeState(State.Died);
     }
 }
Exemple #4
0
 void Damage(AttackArea.AttackInfo attackInfo)
 {
     status.HP -= attackInfo.attackPower;
     if (status.HP <= 0)
     {
         status.HP = 0;
         // 体力0なので死亡
         ChangeState(State.Died);
     }
 }
Exemple #5
0
    // 攻撃情報を取得する.
    AttackArea.AttackInfo GetAttackInfo()
    {
        AttackArea.AttackInfo attackInfo = new AttackArea.AttackInfo();
        // 攻撃力の計算.
        attackInfo.attackerName = attackerName;
        attackInfo.attackPower  = (int)(this.CharaPower * this.MagicPower);
        attackInfo.element      = this.Element;
        attackInfo.elementPower = this.elementPower;

        return(attackInfo);
    }
Exemple #6
0
    // 攻撃情報を取得する.
    AttackArea.AttackInfo GetAttackInfo()
    {
        AttackArea.AttackInfo attackInfo = new AttackArea.AttackInfo();
        // 攻撃力の計算.
        attackInfo.attackPower = 10;

        // 攻撃強化中

        attackInfo.attacker = transform.root;

        return(attackInfo);
    }
Exemple #7
0
    /*
     * public class AttackInfo
     * {
     *  public int attackPower; // この攻撃の攻撃力.
     *  public Transform attacker; // 攻撃者.
     * }*/


    // 攻撃情報を取得する.
    AttackArea.AttackInfo GetAttackInfo()
    {
        AttackArea.AttackInfo attackInfo = new AttackArea.AttackInfo();
        attackInfo.attackerName = "Enemy";
        // 攻撃力の計算.
        attackInfo.attackPower  = (int)(status.Power * status.mag);
        attackInfo.element      = status.attackElement;
        attackInfo.elementPower = 1.5f;
        attackInfo.attacker     = transform.root;

        return(attackInfo);
    }
Exemple #8
0
    void Damage(AttackArea.AttackInfo attackInfo)
    {
        GameObject effect = Instantiate(hitEffect, transform.position, Quaternion.identity) as GameObject;

        effect.transform.localPosition = transform.position + new Vector3(0.0f, 0.5f, 0.0f);
        Destroy(effect, 0.3f);

        status.HP -= attackInfo.attackPower;
        if (status.HP <= 0)
        {
            status.HP = 0;
            // 체력이 0이므로 사망 스테이트로 전환한다.
            ChangeState(State.Died);
        }
    }
Exemple #9
0
    // Calculate a Damage.
    void Damage(AttackArea.AttackInfo attackInfo)
    {
        this.status.HP -= attackInfo.attackPower;

        if (this.status.HP <= 0)
        {
            this.status.HP = 0;
        }
        this.gameRuleCtrl.UpdatePlayerHP(this.status.HP);

        if (this.status.HP == 0)
        {
            this.ChangePlayerState(PlayerState.PlayerDied);
        }
    }
Exemple #10
0
    void Damage(AttackArea.AttackInfo attackInfo)
    {
        if (status.dodgeActive == true)
        {
        }

        else if (state == State.Gurding)
        {
            GameObject effect = Instantiate(hitEffect, transform.position, Quaternion.identity) as GameObject;
            effect.transform.localPosition = transform.position + new Vector3(0.0f, 0.5f, 0.0f);
            Destroy(effect, 0.3f);
            double unko = attackInfo.attackPower * 0.1;
            status.HP      -= (int)unko;
            status.stamina -= attackInfo.attackPower / 10;
            if (status.stamina <= 0)
            {
                status.guardBreak     = true;
                status.stamina        = 0;
                status.guardBreakTime = 100;

                // 体力0なので死亡ステートへ.
                //   ChangeState(State.Died);
            }
            if (status.HP <= 0)
            {
                status.HP = 0;
                // 体力0なので死亡ステートへ.
                ChangeState(State.Died);
            }
        }


        else if (status.guard == false)
        {
            GameObject effect = Instantiate(hitEffect, transform.position, Quaternion.identity) as GameObject;
            effect.transform.localPosition = transform.position + new Vector3(0.0f, 0.5f, 0.0f);
            Destroy(effect, 0.3f);

            status.HP -= attackInfo.attackPower;
            if (status.HP <= 0)
            {
                status.HP = 0;
                // 体力0なので死亡ステートへ.
                ChangeState(State.Died);
            }
        }
    }
Exemple #11
0
    // 当たった.
    void OnTriggerEnter(Collider other)
    {
        AttackArea.AttackInfo info = GetAttackInfo();
        //使用者に魔法が当たったら無視する。
        if (other.gameObject.GetComponent <HitArea>().receiverName == info.attackerName)
        {
            return;
        }
        // 攻撃が当たった相手のDamageメッセージをおくる.
        other.SendMessage("Damage", GetAttackInfo());

        //永続でないならあたり判定を削除する
        if (IsEternal != true)
        {
            Destroy(this.gameObject.GetComponent <Rigidbody>());
        }
    }
Exemple #12
0
    void Damage(AttackArea.AttackInfo attackInfo)
    {
        // 이펙트 발생.
        GameObject effect = Instantiate(hitEffect, transform.position, Quaternion.identity) as GameObject;

        effect.transform.localPosition = transform.position + new Vector3(0.0f, 0.5f, 0.0f);
        Destroy(effect, 0.3f);

        if (networkView.isMine)
        {
            DamageMine(attackInfo.attackPower);
        }
        else
        {
            networkView.RPC("DamageMine", networkView.owner, attackInfo.attackPower);
        }
    }
Exemple #13
0
    void Damage(AttackArea.AttackInfo attackInfo)
    {
        if (this.hitEffect != null)
        {
            // Effect.
            GameObject effect = Instantiate(this.hitEffect, transform.position, Quaternion.identity) as GameObject;
            effect.transform.localPosition = transform.position + new Vector3(0.0f, 0.5f, 0.0f);
            Destroy(effect, 0.3f);
        }
        // Calculate HP.
        status.HP -= attackInfo.attackPower;

        if (status.HP <= 0)
        {
            status.HP = 0;
            ChangeState(EnemyState.Died);
        }
    }
Exemple #14
0
    void Damage(AttackArea.AttackInfo attackInfo)
    {
        //ヒットエフェクト発生
        MakeParticle(hitEffect, 0.3f, new Vector3(0.0f, 0.5f, 0.0f));
        damageSeAudio.Play();

        int damage = attackInfo.attackPower;

        if (status.weakElement == attackInfo.element)//弱点属性なら
        {
            damage = (int)(attackInfo.attackPower * attackInfo.elementPower);
        }
        //ディフェンスの効果
        damage = (int)(damage - status.Defence * 0.07);
        //シールド
        if (status.DefOneBoost)
        {
            damage = (int)(damage * (1 - status.DefOneBoostMig));
            status.StopDefOneBoost();
        }
        //バリア
        if (status.eternalDef)
        {
            damage = (int)(damage * (1 - status.eternalDefMig));
        }

        //ダメージが一定以上ならのけぞり
        if (damage >= ReactLine && !status.lastBeat)
        {
            ChangeState(State.Reacting);
            StartCoroutine(camera.ShakeView());//画面の揺れ
        }
        status.HP -= damage;
        // text.text = "プレイヤー:" + damage + "ダメージ"; //TODO

        if (status.HP <= 0)
        {
            status.HP = 0;
            status.stopAllStatusUp();
            ChangeState(State.Died);//体力0死亡
        }
    }
Exemple #15
0
    public void Damage(AttackArea.AttackInfo attackInfo)
    {
        if (gameRuleCtrl.gameClear)
        {
            return;
        }
        SetAttackTarget(attackInfo.attacker);
        GameObject effect = Instantiate(hitEffect, transform.position, Quaternion.identity) as GameObject;

        effect.transform.localPosition = transform.position + new Vector3(0.0f, 0.5f, 0.0f);
        Destroy(effect, 0.3f);

        status.HP -= attackInfo.attackPower;
        if (status.HP <= 0)
        {
            status.HP = 0;
            // 体力0なので死亡ステートへ.
            ChangeState(State.Died);
        }
    }
Exemple #16
0
    void Damage(AttackArea.AttackInfo attackInfo)
    {
        //パーティクル生成
        GameObject effect;

        switch (attackInfo.element)
        {
        case 0:
            effect = (GameObject)Instantiate(hitEffect[0], transform.position, Quaternion.identity);
            break;

        case 1:
            effect = (GameObject)Instantiate(hitEffect[1], transform.position, Quaternion.identity);
            break;

        case 2:
            effect = (GameObject)Instantiate(hitEffect[2], transform.position, Quaternion.identity);
            break;

        case 3:
            effect = (GameObject)Instantiate(hitEffect[3], transform.position, Quaternion.identity);
            break;

        case 4:
            effect = (GameObject)Instantiate(hitEffect[4], transform.position, Quaternion.identity);
            break;

        case 5:
            effect = (GameObject)Instantiate(hitEffect[5], transform.position, Quaternion.identity);
            break;

        case 6:
            effect = (GameObject)Instantiate(hitEffect[6], transform.position, Quaternion.identity);
            break;

        default:
            effect = (GameObject)Instantiate(hitEffect[0], transform.position, Quaternion.identity);
            break;
        }

        effect.transform.localPosition = transform.position + new Vector3(0.0f, 0.5f, 0.3f);
        Destroy(effect, 0.3f);
        damageSeAudio.Play();

        int damage = attackInfo.attackPower;

        if (status.weakElement == attackInfo.element)//弱点属性なら
        {
            damage = (int)(attackInfo.attackPower * attackInfo.elementPower);
        }
        //ディフェンスの効果
        damage     = (int)(damage - status.Defence * 0.1);
        status.HP -= (int)(damage * Random.Range(0.9f, 1.1f));

        if (status.HP <= 0)
        {
            status.HP = 0;
            // 体力0なので死亡
            ChangeState(State.Died);
        }
        //text.text = "敵:" + damage + "ダメージ";
        HPText.text    = status.HP.ToString();
        MaxHPText.text = "/" + status.MaxHP.ToString();
    }
Exemple #17
0
 void Damage(AttackArea.AttackInfo attackInfo)
 {
     transform.root.SendMessage("Damage", attackInfo);
 }
Exemple #18
0
 //攻撃されたらメッセージが送られてくるのでそれを本体のスクリプトに伝える
 void Damage(AttackArea.AttackInfo attackInfo)
 {
     rootBody.SendMessage("Damage", attackInfo);
 }