Exemplo n.º 1
0
    /// <summary>
    /// 元のドロップを置き換えてドロップを生成する
    /// </summary>
    public void MakeDrop(tDrop.Type type, int L, int D)
    {
        DestroyDrop(L, D);
        GameObject dropObj;

        switch (type)
        {
        case tDrop.Type.Circle:
            dropObj = Instantiate(DropCirce, Lanes[L].transform);
            break;

        case tDrop.Type.Cross:
            dropObj = Instantiate(DropCross, Lanes[L].transform);
            break;

        case tDrop.Type.Tryangle:
            dropObj = Instantiate(DropTryangle, Lanes[L].transform);
            break;

        case tDrop.Type.All:
            dropObj = Instantiate(DropAll, Lanes[L].transform);
            break;

        default:
            Debug.Log(type.ToString() + "のタイプの生成処理が書かれていません");
            dropObj = Instantiate(DropCirce, Lanes[L].transform);
            break;
        }
        dropObj.transform.localPosition = new Vector3(0f, 0f, GetTargetZ(D));
        drops[L, D] = dropObj.GetComponent <tDrop>();
    }
Exemplo n.º 2
0
    /// <summary>
    /// 外部から呼び出される、ユーザー操作によって一番下の段のドロップを破壊する関数
    /// </summary>
    /// <param name="type">破壊するドロップ</param>
    /// <returns>何個消したか</returns>
    public int DestroyUnderDrop(tDrop.Type type)
    {
        if (IsThereMovingDrop())
        {
            return(0);
        }
        int count = 0;

        for (int L = 0; L < LANE_NUM; L++)
        {
            // ここの虹色消したとき、他の色どう判定するか決める。intは何を返す?
            if (drops[L, UNDER_DROP].type == type && isExist(L, UNDER_DROP))
            {
                count++;
                DestroyDrop(L, UNDER_DROP);
            }
        }

        if (count == 0)
        {
            SEPlayer.Play(SE.Name.DROP_BREAK1, 0f, count / 7f + 0.7f);
        }
        else if (count == 1)
        {
            SEPlayer.Play(SE.Name.DROP_BREAK1, 0.25f);
        }
        else if (count == 2)
        {
            SEPlayer.Play(SE.Name.DROP_BREAK2, 0.18f);
        }

        return(count);
    }
Exemplo n.º 3
0
    public void Damaged(float power, tDrop.Type type)
    {
        SEPlayer.Play(SE.Name.DAMAGED, 0.42f);
        int num = enemyList.Count;

        if (targeted != null)
        {
            power = targeted.Damaged(power, type);
            if (targeted.hp.IsDie())
            {
                num--;
            }
        }

        if (num > 0 && power > 0)
        {
            foreach (var enemy in enemyList)
            {
                if (targeted == enemy)
                {
                    continue;
                }
                enemy.Damaged(power / num, type);
            }
        }
    }
Exemplo n.º 4
0
    void ButtonEffect(tDrop.Type type, int level, float power)
    {
        switch (type)
        {
        case tDrop.Type.Tryangle:
            TryangleEffect.Effect(level);
            TryangleEffect.AddPower(power);
            break;

        case tDrop.Type.Cross:
            CrossEffect.Effect(level);
            CrossEffect.AddPower(power);
            break;

        case tDrop.Type.Circle:
            CircleEffect.Effect(level);
            CircleEffect.AddPower(power);
            break;

        case tDrop.Type.All:
            TryangleEffect.Effect(level);
            CrossEffect.Effect(level);
            CircleEffect.Effect(level);
            break;
        }
    }
Exemplo n.º 5
0
    public float Damaged(float power, tDrop.Type type, Vector3 pos, float scale)
    {
        upperHp = hp;
        hp     -= power;
        hp      = Mathf.Clamp(hp, 0f, max);
        lowerHp = hp;

        switch (type)
        {
        case tDrop.Type.Circle:
            CircleDamage.View(power.ToString("#######"), scale);
            CircleDamage.transform.position = pos;
            break;

        case tDrop.Type.Cross:
            CrossDamage.View(power.ToString("#######"), scale);
            CrossDamage.transform.position = pos;
            break;

        case tDrop.Type.Tryangle:
            TryangleDamage.View(power.ToString("#######"), scale);
            TryangleDamage.transform.position = pos;
            break;

        case tDrop.Type.All:
            AllDamage.View(power.ToString("#######"), scale * 1.5f);
            AllDamage.transform.position = pos;
            break;
        }

        Camera.main.GetComponent <CameraShake>().Shake();

        return(Mathf.Max(power - upperHp, 0f));
    }
Exemplo n.º 6
0
    public float Damaged(float power, tDrop.Type damagedType)
    {
        SEPlayer.Play(damagedSE, 1.0f);
        float scale = 1f;

        if (damagedType == type || damagedType == tDrop.Type.All)
        {
            scale  = 3f;
            power *= 2f;
        }
        return(hp.Damaged(power, damagedType, transform.position + new Vector3(Random.Range(-100f, 100f), Random.Range(-100f, 100f) - 50f, 0f), scale));
    }
Exemplo n.º 7
0
    /// ///////////////////////////////////////////////////    更新処理    //////////////////////////////////////////////////////

    public void PlayerDamaged(float power, tDrop.Type type)
    {
        float rate = 1f;

        foreach (var damaged in damagedUp)
        {
            rate *= damaged.rate;
        }
        SEPlayer.Play(SE.Name.DAMAGED, 0.42f);
        Vector3 pos = PlayerHP.transform.position;

        PlayerHP.Damaged(power * rate, type, new Vector3(pos.x + Random.Range(Screen.width / 5f, Screen.width / 5f * 4f), pos.y, pos.z), 3f);
    }
Exemplo n.º 8
0
 public void UserInput(tDrop.Type type)
 {
     if (inputed == true)
     {
         return;
     }
     inputed = true;
     if (state == State.WAITING_USER_INPUT)
     {
         ChangeState(State.PLAYER_ATTACK);
     }
     if (state == State.PLAYER_ATTACK)
     {
         int destroyNum = dropLane.DestroyUnderDrop(type);
         if (destroyNum == 0)
         {
             return;
         }
         float addPower = (Mathf.Pow(2.3f, destroyNum - 1)) * attackPowerBase;
         attackPower[(int)type] += addPower;
         ButtonEffect(type, destroyNum, addPower);
     }
 }
Exemplo n.º 9
0
 public void ClickedEvent()
 {
     tDrop.Type type = lane.Drops[lanePos, tDropLaneBase.DROP_NUM_ON_LANE - 1].type;
     battleManager.UserInput(type);
 }