示例#1
0
    private void Punch()
    {
        //SCR_Audio.PlayPunchNormalSound();
        SCR_Audio.PlayPunchDirectSound();

        float punchAngle = SCR_Helper.AngleBetweenTwoPoint(x, y, bossScript.x, bossScript.y);
        float punchX     = SECURITY_FORCE * SCR_Helper.Sin(punchAngle);
        float punchY     = SECURITY_FORCE * (1 + SCR_Helper.Cos(punchAngle) * 0.33f);

        float particleX = (x + bossScript.x) * 0.5f;
        float particleY = (y + bossScript.y) * 0.5f;

        punchParticle.transform.position = new Vector3(SCR_Gameplay.SCREEN_W * 0.5f + particleX, particleY, punchParticle.transform.position.z);
        foreach (Transform child in punchParticle.transform)
        {
            child.gameObject.SetActive(true);
        }

        bossScript.Punch(punchX, Mathf.Abs(punchY), true);
        SCR_Gameplay.instance.SecurityPunchSuccess(bossScript.x + SCR_Gameplay.SCREEN_W * 0.5f, bossScript.y - SCR_Gameplay.instance.cameraHeight);

        //SCR_Gameplay.instance.AddMoneyAtPosition(SECURITY_MONEY, x + SCR_Gameplay.SCREEN_W * 0.5f, y - SCR_Gameplay.instance.cameraHeight);

        SCR_Gameplay.instance.AddMoneyAtPosition(
            SCR_Player.PUNCH_MONEY_START + SCR_Player.PUNCH_MONEY_STEP * (SCR_Gameplay.instance.comboCount - 1),
            x + SCR_Gameplay.SCREEN_W * 0.5f,
            y - SCR_Gameplay.instance.cameraHeight);
    }
    // ==================================================
    private void Punch(float distance)
    {
        float punchAngle = SCR_Helper.AngleBetweenTwoPoint(x, y, bossScript.x, bossScript.y);
        float punchX     = PLAYER_PUNCH_FORCE * SCR_Helper.Sin(punchAngle);
        float punchY     = PLAYER_PUNCH_FORCE * (1 + SCR_Helper.Cos(punchAngle) * 0.33f);

        float particleX = (x + bossScript.x) * 0.5f;
        float particleY = (y + bossScript.y) * 0.5f;

        punchParticle.transform.position = new Vector3(SCR_Gameplay.SCREEN_W * 0.5f + particleX, particleY, punchParticle.transform.position.z);
        foreach (Transform child in punchParticle.transform)
        {
            child.gameObject.SetActive(true);
        }
        Material shockMaterial = punchParticle.transform.Find("Shock").GetComponent <Renderer>().sharedMaterial;
        int      index         = SCR_Gameplay.instance.comboCount;

        if (index < 0)
        {
            index = 0;
        }
        if (index > PUNCH_PARTICLE_COLORS.Length - 1)
        {
            index = PUNCH_PARTICLE_COLORS.Length - 1;
        }
        shockMaterial.SetColor("_TintColor", PUNCH_PARTICLE_COLORS[index]);

        bossScript.Punch(punchX, Mathf.Abs(punchY), false);
        if (ricocheted == true)
        {
            bossScript.ShowMoneyBag();
            SCR_Gameplay.instance.ShowRicochet(bossScript.x + SCR_Gameplay.SCREEN_W * 0.5f, bossScript.y - SCR_Gameplay.instance.cameraHeight);
            SCR_Audio.PlayPunchRicochetSound();

            int money = RICOCHET_MONEY;

            if (bossScript.size == BossSize.BIG)
            {
                money *= PUNCH_MONEY_BIG_MULTIPLIER;
            }

            SCR_Gameplay.instance.AddMoneyAtPosition(money, bossScript.x + SCR_Gameplay.SCREEN_W * 0.5f, bossScript.y - SCR_Gameplay.instance.cameraHeight);
        }
        else
        {
            SCR_Audio.PlayPunchNormalSound();

            int money = PUNCH_MONEY_START + PUNCH_MONEY_STEP * SCR_Gameplay.instance.comboCount;

            if (bossScript.size == BossSize.BIG)
            {
                money *= PUNCH_MONEY_BIG_MULTIPLIER;
            }

            SCR_Gameplay.instance.AddMoneyAtPosition(
                money,
                bossScript.x + SCR_Gameplay.SCREEN_W * 0.5f,
                bossScript.y - SCR_Gameplay.instance.cameraHeight);
        }

        SCR_Gameplay.instance.PunchSuccess(bossScript.x + SCR_Gameplay.SCREEN_W * 0.5f, bossScript.y - SCR_Gameplay.instance.cameraHeight);

        punchCount = PLAYER_PUNCH_TIME;
    }